@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
package/lib/Compiler.js CHANGED
@@ -5,7 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const parseJson = require("json-parse-even-better-errors");
9
8
  const asyncLib = require("neo-async");
10
9
  const {
11
10
  AsyncParallelHook,
@@ -18,7 +17,6 @@ const Cache = require("./Cache");
18
17
  const CacheFacade = require("./CacheFacade");
19
18
  const ChunkGraph = require("./ChunkGraph");
20
19
  const Compilation = require("./Compilation");
21
- const ConcurrentCompilationError = require("./ConcurrentCompilationError");
22
20
  const ContextModuleFactory = require("./ContextModuleFactory");
23
21
  const ModuleGraph = require("./ModuleGraph");
24
22
  const NormalModuleFactory = require("./NormalModuleFactory");
@@ -26,11 +24,16 @@ const RequestShortener = require("./RequestShortener");
26
24
  const ResolverFactory = require("./ResolverFactory");
27
25
  const Stats = require("./Stats");
28
26
  const Watching = require("./Watching");
29
- const WebpackError = require("./WebpackError");
27
+ const ConcurrentCompilationError = require("./errors/ConcurrentCompilationError");
28
+ const WebpackError = require("./errors/WebpackError");
30
29
  const { Logger } = require("./logging/Logger");
31
30
  const { dirname, join, mkdirp } = require("./util/fs");
32
- const { makePathsRelative } = require("./util/identifier");
31
+ const {
32
+ WINDOWS_ABS_PATH_REGEXP,
33
+ makePathsRelative
34
+ } = require("./util/identifier");
33
35
  const memoize = require("./util/memoize");
36
+ const parseJson = require("./util/parseJson");
34
37
  const { isSourceEqual } = require("./util/source");
35
38
  const webpack = require(".");
36
39
 
@@ -67,12 +70,14 @@ const webpack = require(".");
67
70
  /** @typedef {import("schema-utils").ValidationErrorConfiguration} ValidationErrorConfiguration */
68
71
 
69
72
  /**
73
+ * Defines the compilation params type used by this module.
70
74
  * @typedef {object} CompilationParams
71
75
  * @property {NormalModuleFactory} normalModuleFactory
72
76
  * @property {ContextModuleFactory} contextModuleFactory
73
77
  */
74
78
 
75
79
  /**
80
+ * Defines the callback type used by this module.
76
81
  * @template T
77
82
  * @template [R=void]
78
83
  * @typedef {import("./webpack").Callback<T, R>} Callback
@@ -81,6 +86,7 @@ const webpack = require(".");
81
86
  /** @typedef {import("./webpack").ErrorCallback} ErrorCallback */
82
87
 
83
88
  /**
89
+ * Defines the run as child callback callback.
84
90
  * @callback RunAsChildCallback
85
91
  * @param {Error | null} err
86
92
  * @param {Chunk[]=} entries
@@ -89,6 +95,7 @@ const webpack = require(".");
89
95
  */
90
96
 
91
97
  /**
98
+ * Defines the known records type used by this module.
92
99
  * @typedef {object} KnownRecords
93
100
  * @property {SplitData[]=} aggressiveSplits
94
101
  * @property {RecordsChunks=} chunks
@@ -105,6 +112,7 @@ const webpack = require(".");
105
112
  /** @typedef {KnownRecords & Record<string, KnownRecords[]> & Record<string, EXPECTED_ANY>} Records */
106
113
 
107
114
  /**
115
+ * Defines the asset emitted info type used by this module.
108
116
  * @typedef {object} AssetEmittedInfo
109
117
  * @property {Buffer} content
110
118
  * @property {Source} source
@@ -121,6 +129,7 @@ const webpack = require(".");
121
129
  /** @typedef {{ buildInfo: BuildInfo, references: WeakReferences | undefined, memCache: MemCache }} ModuleMemCachesItem */
122
130
 
123
131
  /**
132
+ * Checks whether this object is sorted.
124
133
  * @template T
125
134
  * @param {T[]} array an array
126
135
  * @returns {boolean} true, if the array is sorted
@@ -133,6 +142,7 @@ const isSorted = (array) => {
133
142
  };
134
143
 
135
144
  /**
145
+ * Returns the object with properties sorted by property name.
136
146
  * @template {object} T
137
147
  * @param {T} obj an object
138
148
  * @param {(keyof T)[]} keys the keys of the object
@@ -147,6 +157,7 @@ const sortObject = (obj, keys) => {
147
157
  };
148
158
 
149
159
  /**
160
+ * Returns true, if the filename contains any hash.
150
161
  * @param {string} filename filename
151
162
  * @param {string | string[] | undefined} hashes list of hashes
152
163
  * @returns {boolean} true, if the filename contains any hash
@@ -163,6 +174,7 @@ const getValidate = memoize(() => require("schema-utils").validate);
163
174
 
164
175
  class Compiler {
165
176
  /**
177
+ * Creates an instance of Compiler.
166
178
  * @param {string} context the compilation path
167
179
  * @param {WebpackOptions} options options
168
180
  */
@@ -210,9 +222,15 @@ class Compiler {
210
222
  /** @type {AsyncSeriesHook<[Compilation]>} */
211
223
  afterCompile: new AsyncSeriesHook(["compilation"]),
212
224
 
213
- /** @type {AsyncSeriesHook<[]>} */
225
+ /**
226
+ * @type {AsyncSeriesHook<[]>}
227
+ * @since 5.67.0
228
+ */
214
229
  readRecords: new AsyncSeriesHook([]),
215
- /** @type {AsyncSeriesHook<[]>} */
230
+ /**
231
+ * @type {AsyncSeriesHook<[]>}
232
+ * @since 5.67.0
233
+ */
216
234
  emitRecords: new AsyncSeriesHook([]),
217
235
 
218
236
  /** @type {AsyncSeriesHook<[Compiler]>} */
@@ -223,7 +241,10 @@ class Compiler {
223
241
  invalid: new SyncHook(["filename", "changeTime"]),
224
242
  /** @type {SyncHook<[]>} */
225
243
  watchClose: new SyncHook([]),
226
- /** @type {AsyncSeriesHook<[]>} */
244
+ /**
245
+ * @type {AsyncSeriesHook<[]>}
246
+ * @since 5.17.0
247
+ */
227
248
  shutdown: new AsyncSeriesHook([]),
228
249
 
229
250
  /** @type {SyncBailHook<[string, string, EXPECTED_ANY[] | undefined], true | void>} */
@@ -231,7 +252,10 @@ class Compiler {
231
252
 
232
253
  // TODO the following hooks are weirdly located here
233
254
  // TODO move them for webpack 5
234
- /** @type {SyncHook<[]>} */
255
+ /**
256
+ * @type {SyncHook<[]>}
257
+ * @since 5.106.0
258
+ */
235
259
  validate: new SyncHook([]),
236
260
  /** @type {SyncHook<[]>} */
237
261
  environment: new SyncHook([]),
@@ -303,21 +327,28 @@ class Compiler {
303
327
  browser: null,
304
328
  webworker: null,
305
329
  node: null,
330
+ deno: null,
331
+ bun: null,
306
332
  nwjs: null,
307
- electron: null
333
+ electron: null,
334
+ universal: null
308
335
  };
309
336
 
310
337
  this.options = options;
311
338
 
339
+ /** @type {string} */
312
340
  this.context = context;
313
341
 
342
+ /** @type {RequestShortener} */
314
343
  this.requestShortener = new RequestShortener(context, this.root);
315
344
 
345
+ /** @type {Cache} */
316
346
  this.cache = new Cache();
317
347
 
318
348
  /** @type {Map<Module, ModuleMemCachesItem> | undefined} */
319
349
  this.moduleMemCaches = undefined;
320
350
 
351
+ /** @type {string} */
321
352
  this.compilerPath = "";
322
353
 
323
354
  /** @type {boolean} */
@@ -329,6 +360,7 @@ class Compiler {
329
360
  /** @type {boolean} */
330
361
  this.watchMode = false;
331
362
 
363
+ /** @type {boolean} */
332
364
  this._backCompat = this.options.experiments.backCompat !== false;
333
365
 
334
366
  /** @type {Compilation | undefined} */
@@ -354,6 +386,7 @@ class Compiler {
354
386
  }
355
387
 
356
388
  /**
389
+ * Returns the cache facade instance.
357
390
  * @param {string} name cache name
358
391
  * @returns {CacheFacade} the cache facade instance
359
392
  */
@@ -366,6 +399,7 @@ class Compiler {
366
399
  }
367
400
 
368
401
  /**
402
+ * Gets infrastructure logger.
369
403
  * @param {string | (() => string)} name name of the logger, or function called once to get the logger name
370
404
  * @returns {Logger} a logger with that name
371
405
  */
@@ -481,6 +515,26 @@ class Compiler {
481
515
  }
482
516
 
483
517
  /**
518
+ * Release fields on a finished compilation that nothing reads after emit,
519
+ * so the heap can shrink while user code still holds the Stats reference.
520
+ * Recurses into child compilations. Stats output is preserved — only
521
+ * codeGen byproducts are dropped.
522
+ * @param {Compilation} compilation finished compilation to slim down
523
+ * @returns {void}
524
+ */
525
+ _releaseUnusedCompilationData(compilation) {
526
+ for (const child of compilation.children) {
527
+ this._releaseUnusedCompilationData(child);
528
+ }
529
+ // Rendered source per (module × runtime) — used only during seal/emit,
530
+ // never read by Stats, and not serialized to the persistent cache.
531
+ if (compilation.codeGenerationResults !== undefined) {
532
+ compilation.codeGenerationResults.map.clear();
533
+ }
534
+ }
535
+
536
+ /**
537
+ * Returns a compiler watcher.
484
538
  * @param {WatchOptions} watchOptions the watcher's options
485
539
  * @param {Callback<Stats>} handler signals when the call finishes
486
540
  * @returns {Watching | undefined} a compiler watcher
@@ -498,6 +552,7 @@ class Compiler {
498
552
  }
499
553
 
500
554
  /**
555
+ * Processes the provided stat.
501
556
  * @param {Callback<Stats>} callback signals when the call finishes
502
557
  * @returns {void}
503
558
  */
@@ -511,6 +566,7 @@ class Compiler {
511
566
  let logger;
512
567
 
513
568
  /**
569
+ * Processes the provided err.
514
570
  * @param {Error | null} err error
515
571
  * @param {Stats=} stats stats
516
572
  */
@@ -532,6 +588,7 @@ class Compiler {
532
588
  this.running = true;
533
589
 
534
590
  /**
591
+ * Processes the provided err.
535
592
  * @param {Error | null} err error
536
593
  * @param {Compilation=} _compilation compilation
537
594
  * @returns {void}
@@ -639,6 +696,7 @@ class Compiler {
639
696
  }
640
697
 
641
698
  /**
699
+ * Processes the provided run as child callback.
642
700
  * @param {RunAsChildCallback} callback signals when the call finishes
643
701
  * @returns {void}
644
702
  */
@@ -646,6 +704,7 @@ class Compiler {
646
704
  const startTime = Date.now();
647
705
 
648
706
  /**
707
+ * Processes the provided err.
649
708
  * @param {Error | null} err error
650
709
  * @param {Chunk[]=} entries entries
651
710
  * @param {Compilation=} compilation compilation
@@ -699,6 +758,7 @@ class Compiler {
699
758
  }
700
759
 
701
760
  /**
761
+ * Processes the provided compilation.
702
762
  * @param {Compilation} compilation the compilation
703
763
  * @param {ErrorCallback} callback signals when the assets are emitted
704
764
  * @returns {void}
@@ -708,6 +768,7 @@ class Compiler {
708
768
  let outputPath;
709
769
 
710
770
  /**
771
+ * Processes the provided err.
711
772
  * @param {Error=} err error
712
773
  * @returns {void}
713
774
  */
@@ -740,18 +801,21 @@ class Compiler {
740
801
  includesHash(targetFile, info.fullhash));
741
802
  }
742
803
 
804
+ const fs = /** @type {OutputFileSystem} */ (this.outputFileSystem);
805
+ // A Windows drive-absolute targetFile is written as-is; joining it onto
806
+ // outputPath would produce an invalid path (e.g. C:\out\D:\file). A
807
+ // leading "/" stays relative to outputPath (e.g. entry name "/dir/x").
808
+ const targetPath = WINDOWS_ABS_PATH_REGEXP.test(targetFile)
809
+ ? targetFile
810
+ : join(fs, outputPath, targetFile);
811
+
743
812
  /**
813
+ * Processes the provided err.
744
814
  * @param {Error=} err error
745
815
  * @returns {void}
746
816
  */
747
817
  const writeOut = (err) => {
748
818
  if (err) return callback(err);
749
- const targetPath = join(
750
- /** @type {OutputFileSystem} */
751
- (this.outputFileSystem),
752
- outputPath,
753
- targetFile
754
- );
755
819
  allTargetPaths.add(targetPath);
756
820
 
757
821
  // check if the target file has already been written by this Compiler
@@ -875,6 +939,7 @@ ${other}`);
875
939
  };
876
940
 
877
941
  /**
942
+ * Updates with replacement source.
878
943
  * @param {number} size size
879
944
  */
880
945
  const updateWithReplacementSource = (size) => {
@@ -897,6 +962,7 @@ ${other}`);
897
962
  };
898
963
 
899
964
  /**
965
+ * Updates file with replacement source.
900
966
  * @param {string} file file
901
967
  * @param {CacheEntry} cacheEntry cache entry
902
968
  * @param {number} size size
@@ -918,6 +984,7 @@ ${other}`);
918
984
  };
919
985
 
920
986
  /**
987
+ * Process existing file.
921
988
  * @param {IStats} stats stats
922
989
  * @returns {void}
923
990
  */
@@ -1014,8 +1081,7 @@ ${other}`);
1014
1081
  };
1015
1082
 
1016
1083
  if (/\/|\\/.test(targetFile)) {
1017
- const fs = /** @type {OutputFileSystem} */ (this.outputFileSystem);
1018
- const dir = dirname(fs, join(fs, outputPath, targetFile));
1084
+ const dir = dirname(fs, targetPath);
1019
1085
  mkdirp(fs, dir, writeOut);
1020
1086
  } else {
1021
1087
  writeOut();
@@ -1052,6 +1118,7 @@ ${other}`);
1052
1118
  }
1053
1119
 
1054
1120
  /**
1121
+ * Processes the provided error callback.
1055
1122
  * @param {ErrorCallback} callback signals when the call finishes
1056
1123
  * @returns {void}
1057
1124
  */
@@ -1076,6 +1143,7 @@ ${other}`);
1076
1143
  }
1077
1144
 
1078
1145
  /**
1146
+ * Processes the provided error callback.
1079
1147
  * @param {ErrorCallback} callback signals when the call finishes
1080
1148
  * @returns {void}
1081
1149
  */
@@ -1125,6 +1193,7 @@ ${other}`);
1125
1193
  }
1126
1194
 
1127
1195
  /**
1196
+ * Processes the provided error callback.
1128
1197
  * @param {ErrorCallback} callback signals when the call finishes
1129
1198
  * @returns {void}
1130
1199
  */
@@ -1151,6 +1220,7 @@ ${other}`);
1151
1220
  }
1152
1221
 
1153
1222
  /**
1223
+ * Processes the provided error callback.
1154
1224
  * @param {ErrorCallback} callback signals when the call finishes
1155
1225
  * @returns {void}
1156
1226
  */
@@ -1173,13 +1243,15 @@ ${other}`);
1173
1243
  if (err) return callback(err);
1174
1244
 
1175
1245
  try {
1176
- this.records = parseJson(
1177
- /** @type {Buffer} */ (content).toString("utf8")
1178
- );
1246
+ this.records =
1247
+ /** @type {Records} */
1248
+ (parseJson(/** @type {Buffer} */ (content).toString("utf8")));
1179
1249
  } catch (parseErr) {
1180
1250
  return callback(
1181
1251
  new Error(
1182
- `Cannot parse records: ${/** @type {Error} */ (parseErr).message}`
1252
+ `Cannot parse records: ${
1253
+ /** @type {Error} */ (parseErr).message
1254
+ }`
1183
1255
  )
1184
1256
  );
1185
1257
  }
@@ -1191,6 +1263,7 @@ ${other}`);
1191
1263
  }
1192
1264
 
1193
1265
  /**
1266
+ * Creates a child compiler.
1194
1267
  * @param {Compilation} compilation the compilation
1195
1268
  * @param {string} compilerName the compiler's name
1196
1269
  * @param {number} compilerIndex the compiler's index
@@ -1293,6 +1366,7 @@ ${other}`);
1293
1366
  }
1294
1367
 
1295
1368
  /**
1369
+ * Creates a compilation.
1296
1370
  * @param {CompilationParams} params the compilation parameters
1297
1371
  * @returns {Compilation} compilation
1298
1372
  */
@@ -1302,6 +1376,7 @@ ${other}`);
1302
1376
  }
1303
1377
 
1304
1378
  /**
1379
+ * Returns the created compilation.
1305
1380
  * @param {CompilationParams} params the compilation parameters
1306
1381
  * @returns {Compilation} the created compilation
1307
1382
  */
@@ -1343,6 +1418,7 @@ ${other}`);
1343
1418
  }
1344
1419
 
1345
1420
  /**
1421
+ * Processes the provided compilation.
1346
1422
  * @param {Callback<Compilation>} callback signals when the compilation finishes
1347
1423
  * @returns {void}
1348
1424
  */
@@ -1394,6 +1470,7 @@ ${other}`);
1394
1470
  }
1395
1471
 
1396
1472
  /**
1473
+ * Processes the provided error callback.
1397
1474
  * @param {ErrorCallback} callback signals when the compiler closes
1398
1475
  * @returns {void}
1399
1476
  */
@@ -1407,9 +1484,14 @@ ${other}`);
1407
1484
  }
1408
1485
  this.hooks.shutdown.callAsync((err) => {
1409
1486
  if (err) return callback(err);
1410
- // Get rid of reference to last compilation to avoid leaking memory
1411
- // We can't run this._cleanupLastCompilation() as the Stats to this compilation
1412
- // might be still in use. We try to get rid of the reference to the cache instead.
1487
+ // Defer a microtask so a close() made inside the run callback can't
1488
+ // release codeGenerationResults before afterDone fires on the same stack.
1489
+ const lastCompilation = this._lastCompilation;
1490
+ if (lastCompilation !== undefined) {
1491
+ Promise.resolve().then(() => {
1492
+ this._releaseUnusedCompilationData(lastCompilation);
1493
+ });
1494
+ }
1413
1495
  this._lastCompilation = undefined;
1414
1496
  this._lastNormalModuleFactory = undefined;
1415
1497
  this.cache.shutdown(callback);
@@ -1431,6 +1513,7 @@ ${other}`);
1431
1513
  }
1432
1514
 
1433
1515
  /**
1516
+ * Returns schema.
1434
1517
  * @returns {Schema} schema
1435
1518
  */
1436
1519
  const getSchema = () => {
@@ -1444,12 +1527,7 @@ ${other}`);
1444
1527
  // // If we have precompiled schema let's use it
1445
1528
  if (check) {
1446
1529
  if (!check(value)) {
1447
- getValidate()(
1448
- getSchema(),
1449
- /** @type {EXPECTED_OBJECT | EXPECTED_OBJECT[]} */
1450
- (value),
1451
- options
1452
- );
1530
+ getValidate()(getSchema(), value, options);
1453
1531
  require("util").deprecate(
1454
1532
  () => {},
1455
1533
  "webpack bug: Pre-compiled schema reports error while real schema is happy. This has performance drawbacks.",
@@ -1460,11 +1538,7 @@ ${other}`);
1460
1538
  }
1461
1539
 
1462
1540
  // Otherwise let's standard validation
1463
- getValidate()(
1464
- getSchema(),
1465
- /** @type {EXPECTED_OBJECT | EXPECTED_OBJECT[]} */ (value),
1466
- options
1467
- );
1541
+ getValidate()(getSchema(), value, options);
1468
1542
  }
1469
1543
  }
1470
1544
 
@@ -17,24 +17,34 @@ const {
17
17
  /** @typedef {import("./optimize/ConcatenatedModule").ExportName} Ids */
18
18
 
19
19
  const MODULE_REFERENCE_REGEXP =
20
- /^__WEBPACK_MODULE_REFERENCE__(\d+)_([\da-f]+|ns)(_call)?(_directImport)?(_deferredImport)?(?:_asiSafe(\d))?__$/;
20
+ /^__WEBPACK_MODULE_REFERENCE__(\d+)_([\da-f]+|ns)(_call)?(_directImport)?(_deferredImport)?(_mangleableNs)?(?:_asiSafe(\d))?__$/;
21
21
 
22
22
  /**
23
+ * Encodes how a concatenated module reference should be interpreted when it is
24
+ * later reconstructed from its placeholder identifier.
23
25
  * @typedef {object} ModuleReferenceOptions
24
- * @property {Ids} ids the properties/exports of the module
26
+ * @property {Ids} ids the properties or exports selected from the referenced module
25
27
  * @property {boolean} call true, when this referenced export is called
26
28
  * @property {boolean} directImport true, when this referenced export is directly imported (not via property access)
27
29
  * @property {boolean} deferredImport true, when this referenced export is deferred
30
+ * @property {boolean} mangleableNamespace true, when a whole-namespace reference may use a decoupled namespace object that keeps the original export names
28
31
  * @property {boolean | undefined} asiSafe if the position is ASI safe or unknown
29
32
  */
30
33
 
34
+ /**
35
+ * Tracks the symbols and cross-module references needed while rendering a
36
+ * concatenated module.
37
+ */
31
38
  class ConcatenationScope {
32
39
  /**
40
+ * Creates the mutable scope object used while rendering a concatenated
41
+ * module and its cross-module references.
33
42
  * @param {ModuleInfo[] | Map<Module, ModuleInfo>} modulesMap all module info by module
34
43
  * @param {ConcatenatedModuleInfo} currentModule the current module info
35
44
  * @param {Set<string>} usedNames all used names
36
45
  */
37
46
  constructor(modulesMap, currentModule, usedNames) {
47
+ /** @type {ConcatenatedModuleInfo} */
38
48
  this._currentModule = currentModule;
39
49
  if (Array.isArray(modulesMap)) {
40
50
  /** @type {Map<Module, ConcatenatedModuleInfo>} */
@@ -44,11 +54,14 @@ class ConcatenationScope {
44
54
  }
45
55
  modulesMap = map;
46
56
  }
57
+ /** @type {Set<string>} */
47
58
  this.usedNames = usedNames;
59
+ /** @type {Map<Module, ModuleInfo>} */
48
60
  this._modulesMap = modulesMap;
49
61
  }
50
62
 
51
63
  /**
64
+ * Checks whether a module participates in the current concatenation scope.
52
65
  * @param {Module} module the referenced module
53
66
  * @returns {boolean} true, when it's in the scope
54
67
  */
@@ -57,6 +70,8 @@ class ConcatenationScope {
57
70
  }
58
71
 
59
72
  /**
73
+ * Records the symbol that should be used when the current module exports a
74
+ * named binding.
60
75
  * @param {string} exportName name of the export
61
76
  * @param {string} symbol identifier of the export in source code
62
77
  */
@@ -70,6 +85,8 @@ class ConcatenationScope {
70
85
  }
71
86
 
72
87
  /**
88
+ * Records a raw expression that can be used to reference an export without
89
+ * going through the normal symbol map.
73
90
  * @param {string} exportName name of the export
74
91
  * @param {string} expression expression to be used
75
92
  */
@@ -83,6 +100,7 @@ class ConcatenationScope {
83
100
  }
84
101
 
85
102
  /**
103
+ * Returns the raw expression registered for an export, if one exists.
86
104
  * @param {string} exportName name of the export
87
105
  * @returns {string | undefined} the expression of the export
88
106
  */
@@ -94,6 +112,8 @@ class ConcatenationScope {
94
112
  }
95
113
 
96
114
  /**
115
+ * Replaces the raw expression for an export only when that export already
116
+ * has an entry in the raw export map.
97
117
  * @param {string} exportName name of the export
98
118
  * @param {string} expression expression to be used
99
119
  */
@@ -107,6 +127,7 @@ class ConcatenationScope {
107
127
  }
108
128
 
109
129
  /**
130
+ * Records the symbol that should be used for the synthetic namespace export.
110
131
  * @param {string} symbol identifier of the export in source code
111
132
  */
112
133
  registerNamespaceExport(symbol) {
@@ -114,6 +135,8 @@ class ConcatenationScope {
114
135
  }
115
136
 
116
137
  /**
138
+ * Encodes a reference to another concatenated module as a placeholder
139
+ * identifier that can be parsed later during code generation.
117
140
  * @param {Module} module the referenced module
118
141
  * @param {Partial<ModuleReferenceOptions>} options options
119
142
  * @returns {string} the reference as identifier
@@ -125,6 +148,7 @@ class ConcatenationScope {
125
148
  call = false,
126
149
  directImport = false,
127
150
  deferredImport = false,
151
+ mangleableNamespace = false,
128
152
  asiSafe = false
129
153
  }
130
154
  ) {
@@ -132,6 +156,7 @@ class ConcatenationScope {
132
156
  const callFlag = call ? "_call" : "";
133
157
  const directImportFlag = directImport ? "_directImport" : "";
134
158
  const deferredImportFlag = deferredImport ? "_deferredImport" : "";
159
+ const mangleableNamespaceFlag = mangleableNamespace ? "_mangleableNs" : "";
135
160
  const asiSafeFlag = asiSafe
136
161
  ? "_asiSafe1"
137
162
  : asiSafe === false
@@ -141,10 +166,12 @@ class ConcatenationScope {
141
166
  ? Buffer.from(JSON.stringify(ids), "utf8").toString("hex")
142
167
  : "ns";
143
168
  // a "._" is appended to allow "delete ...", which would cause a SyntaxError in strict mode
144
- return `__WEBPACK_MODULE_REFERENCE__${info.index}_${exportData}${callFlag}${directImportFlag}${deferredImportFlag}${asiSafeFlag}__._`;
169
+ return `__WEBPACK_MODULE_REFERENCE__${info.index}_${exportData}${callFlag}${directImportFlag}${deferredImportFlag}${mangleableNamespaceFlag}${asiSafeFlag}__._`;
145
170
  }
146
171
 
147
172
  /**
173
+ * Checks whether an identifier is one of webpack's encoded concatenation
174
+ * module references.
148
175
  * @param {string} name the identifier
149
176
  * @returns {boolean} true, when it's an module reference
150
177
  */
@@ -153,6 +180,8 @@ class ConcatenationScope {
153
180
  }
154
181
 
155
182
  /**
183
+ * Parses an encoded module reference back into its module index and
184
+ * reference flags.
156
185
  * @param {string} name the identifier
157
186
  * @returns {ModuleReferenceOptions & { index: number } | null} parsed options and index
158
187
  */
@@ -160,7 +189,7 @@ class ConcatenationScope {
160
189
  const match = MODULE_REFERENCE_REGEXP.exec(name);
161
190
  if (!match) return null;
162
191
  const index = Number(match[1]);
163
- const asiSafe = match[6];
192
+ const asiSafe = match[7];
164
193
  return {
165
194
  index,
166
195
  ids:
@@ -170,6 +199,7 @@ class ConcatenationScope {
170
199
  call: Boolean(match[3]),
171
200
  directImport: Boolean(match[4]),
172
201
  deferredImport: Boolean(match[5]),
202
+ mangleableNamespace: Boolean(match[6]),
173
203
  asiSafe: asiSafe ? asiSafe === "1" : undefined
174
204
  };
175
205
  }
@@ -15,6 +15,7 @@ const { mergeRuntime } = require("./util/runtime");
15
15
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
16
16
 
17
17
  /**
18
+ * Returns wrapped source.
18
19
  * @param {string} condition condition
19
20
  * @param {string | Source} source source
20
21
  * @returns {string | Source} wrapped source
@@ -36,10 +37,12 @@ const wrapInCondition = (condition, source) => {
36
37
  };
37
38
 
38
39
  /**
40
+ * Represents ConditionalInitFragment.
39
41
  * @extends {InitFragment<GenerateContext>}
40
42
  */
41
43
  class ConditionalInitFragment extends InitFragment {
42
44
  /**
45
+ * Creates an instance of ConditionalInitFragment.
43
46
  * @param {string | Source | undefined} content the source code that will be included as initialization code
44
47
  * @param {number} stage category of initialization code (contribute to order)
45
48
  * @param {number} position position in the category (contribute to order)
@@ -60,6 +63,7 @@ class ConditionalInitFragment extends InitFragment {
60
63
  }
61
64
 
62
65
  /**
66
+ * Returns the source code that will be included as initialization code.
63
67
  * @param {GenerateContext} context context
64
68
  * @returns {string | Source | undefined} the source code that will be included as initialization code
65
69
  */
@@ -77,6 +81,7 @@ class ConditionalInitFragment extends InitFragment {
77
81
  }
78
82
 
79
83
  /**
84
+ * Returns the source code that will be included at the end of the module.
80
85
  * @param {GenerateContext} context context
81
86
  * @returns {string | Source | undefined} the source code that will be included at the end of the module
82
87
  */
@@ -94,6 +99,7 @@ class ConditionalInitFragment extends InitFragment {
94
99
  }
95
100
 
96
101
  /**
102
+ * Returns merged fragment.
97
103
  * @param {ConditionalInitFragment} other fragment to merge with
98
104
  * @returns {ConditionalInitFragment} merged fragment
99
105
  */