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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +9 -11
  2. package/changes.json +16 -24
  3. package/hot/dev-server.js +2 -0
  4. package/lib/APIPlugin.js +60 -35
  5. package/lib/AsyncDependenciesBlock.js +3 -0
  6. package/lib/AutomaticPrefetchPlugin.js +6 -1
  7. package/lib/BannerPlugin.js +13 -5
  8. package/lib/Cache.js +27 -5
  9. package/lib/CacheFacade.js +41 -0
  10. package/lib/Chunk.js +71 -25
  11. package/lib/ChunkGraph.js +141 -9
  12. package/lib/ChunkGroup.js +115 -28
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CircularModulesPlugin.js +190 -0
  15. package/lib/CleanPlugin.js +23 -26
  16. package/lib/CodeGenerationResults.js +19 -0
  17. package/lib/CompatibilityPlugin.js +54 -37
  18. package/lib/Compilation.js +635 -107
  19. package/lib/Compiler.js +93 -31
  20. package/lib/ConcatenationScope.js +34 -4
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +15 -12
  23. package/lib/ContextExclusionPlugin.js +3 -1
  24. package/lib/ContextModule.js +345 -55
  25. package/lib/ContextModuleFactory.js +193 -51
  26. package/lib/ContextReplacementPlugin.js +8 -1
  27. package/lib/DefinePlugin.js +498 -127
  28. package/lib/DependenciesBlock.js +6 -1
  29. package/lib/Dependency.js +159 -11
  30. package/lib/DependencyTemplate.js +7 -1
  31. package/lib/DependencyTemplates.js +4 -0
  32. package/lib/DotenvPlugin.js +3 -0
  33. package/lib/DynamicEntryPlugin.js +3 -1
  34. package/lib/EntryOptionPlugin.js +42 -2
  35. package/lib/EntryPlugin.js +4 -1
  36. package/lib/Entrypoint.js +5 -1
  37. package/lib/EnvironmentPlugin.js +3 -2
  38. package/lib/ErrorHelpers.js +7 -0
  39. package/lib/EvalDevToolModulePlugin.js +3 -1
  40. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  41. package/lib/ExportsInfo.js +399 -108
  42. package/lib/ExportsInfoApiPlugin.js +4 -3
  43. package/lib/ExternalModule.js +376 -78
  44. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  45. package/lib/ExternalsPlugin.js +3 -1
  46. package/lib/FileSystemInfo.js +575 -149
  47. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  48. package/lib/FlagDependencyExportsPlugin.js +82 -9
  49. package/lib/FlagDependencyUsagePlugin.js +92 -6
  50. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  51. package/lib/Generator.js +24 -3
  52. package/lib/HotModuleReplacementPlugin.js +110 -44
  53. package/lib/IgnorePlugin.js +5 -2
  54. package/lib/IgnoreWarningsPlugin.js +2 -1
  55. package/lib/InitFragment.js +15 -0
  56. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  57. package/lib/LazyBarrel.js +389 -0
  58. package/lib/LibraryTemplatePlugin.js +2 -1
  59. package/lib/LoaderOptionsPlugin.js +3 -1
  60. package/lib/LoaderTargetPlugin.js +3 -1
  61. package/lib/MainTemplate.js +15 -0
  62. package/lib/ManifestPlugin.js +9 -2
  63. package/lib/Module.js +121 -60
  64. package/lib/ModuleFactory.js +6 -1
  65. package/lib/ModuleFilenameHelpers.js +5 -2
  66. package/lib/ModuleGraph.js +69 -2
  67. package/lib/ModuleGraphConnection.js +9 -0
  68. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  69. package/lib/ModuleNotFoundError.js +3 -83
  70. package/lib/ModuleProfile.js +27 -1
  71. package/lib/ModuleSourceTypeConstants.js +52 -19
  72. package/lib/ModuleTemplate.js +10 -0
  73. package/lib/ModuleTypeConstants.js +20 -4
  74. package/lib/MultiCompiler.js +59 -4
  75. package/lib/MultiStats.js +9 -0
  76. package/lib/MultiWatching.js +6 -0
  77. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  78. package/lib/NodeStuffPlugin.js +78 -46
  79. package/lib/NormalModule.js +485 -181
  80. package/lib/NormalModuleFactory.js +148 -29
  81. package/lib/NormalModuleReplacementPlugin.js +3 -1
  82. package/lib/NullFactory.js +1 -0
  83. package/lib/OptionsApply.js +1 -0
  84. package/lib/Parser.js +3 -1
  85. package/lib/PlatformPlugin.js +2 -1
  86. package/lib/PrefetchPlugin.js +4 -1
  87. package/lib/ProgressPlugin.js +351 -161
  88. package/lib/ProvidePlugin.js +6 -3
  89. package/lib/RawModule.js +32 -16
  90. package/lib/RecordIdsPlugin.js +9 -0
  91. package/lib/RequestShortener.js +8 -0
  92. package/lib/ResolverFactory.js +5 -0
  93. package/lib/RuntimeGlobals.js +58 -5
  94. package/lib/RuntimeModule.js +22 -7
  95. package/lib/RuntimePlugin.js +104 -26
  96. package/lib/RuntimeTemplate.js +616 -37
  97. package/lib/SelfModuleFactory.js +3 -0
  98. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  99. package/lib/SourceMapDevToolPlugin.js +341 -63
  100. package/lib/Stats.js +6 -0
  101. package/lib/Template.js +29 -3
  102. package/lib/TemplatedPathPlugin.js +505 -138
  103. package/lib/UseStrictPlugin.js +3 -2
  104. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  105. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  106. package/lib/WarnNoModeSetPlugin.js +18 -2
  107. package/lib/WatchIgnorePlugin.js +5 -1
  108. package/lib/Watching.js +25 -3
  109. package/lib/WebpackError.js +3 -74
  110. package/lib/WebpackIsIncludedPlugin.js +4 -2
  111. package/lib/WebpackOptionsApply.js +88 -25
  112. package/lib/WebpackOptionsDefaulter.js +1 -0
  113. package/lib/asset/AssetBytesGenerator.js +28 -10
  114. package/lib/asset/AssetBytesParser.js +1 -0
  115. package/lib/asset/AssetGenerator.js +199 -60
  116. package/lib/asset/AssetModule.js +47 -0
  117. package/lib/asset/AssetModulesPlugin.js +115 -24
  118. package/lib/asset/AssetParser.js +4 -2
  119. package/lib/asset/AssetSourceGenerator.js +26 -8
  120. package/lib/asset/AssetSourceParser.js +1 -0
  121. package/lib/asset/RawDataUrlModule.js +23 -13
  122. package/lib/asset/WebManifestGenerator.js +164 -0
  123. package/lib/asset/WebManifestParser.js +130 -0
  124. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  125. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  126. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  127. package/lib/async-modules/isGeneratorLowered.js +26 -0
  128. package/lib/buildChunkGraph.js +107 -15
  129. package/lib/bun/BunTargetPlugin.js +42 -0
  130. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  131. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  132. package/lib/cache/IdleFileCachePlugin.js +6 -1
  133. package/lib/cache/MemoryCachePlugin.js +1 -1
  134. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  135. package/lib/cache/PackFileCacheStrategy.js +43 -7
  136. package/lib/cache/ResolverCachePlugin.js +12 -1
  137. package/lib/cache/getLazyHashedEtag.js +13 -2
  138. package/lib/cache/mergeEtags.js +4 -0
  139. package/lib/cli.js +142 -20
  140. package/lib/config/browserslistTargetHandler.js +141 -0
  141. package/lib/config/defaults.js +591 -41
  142. package/lib/config/defineConfig.js +31 -0
  143. package/lib/config/normalization.js +46 -1
  144. package/lib/config/target.js +200 -2
  145. package/lib/container/ContainerEntryDependency.js +2 -0
  146. package/lib/container/ContainerEntryModule.js +27 -14
  147. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  148. package/lib/container/ContainerExposedDependency.js +6 -2
  149. package/lib/container/ContainerPlugin.js +2 -1
  150. package/lib/container/ContainerReferencePlugin.js +3 -2
  151. package/lib/container/FallbackDependency.js +9 -7
  152. package/lib/container/FallbackItemDependency.js +1 -0
  153. package/lib/container/FallbackModule.js +22 -9
  154. package/lib/container/FallbackModuleFactory.js +1 -0
  155. package/lib/container/ModuleFederationPlugin.js +12 -26
  156. package/lib/container/RemoteModule.js +33 -10
  157. package/lib/container/RemoteRuntimeModule.js +15 -12
  158. package/lib/container/RemoteToExternalDependency.js +1 -0
  159. package/lib/container/options.js +7 -0
  160. package/lib/css/CssGenerator.js +534 -272
  161. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  162. package/lib/css/CssLoadingRuntimeModule.js +156 -77
  163. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  164. package/lib/css/CssModulesPlugin.js +356 -204
  165. package/lib/css/CssParser.js +3452 -1950
  166. package/lib/css/syntax.js +4058 -0
  167. package/lib/debug/ProfilingPlugin.js +33 -2
  168. package/lib/deno/DenoTargetPlugin.js +41 -0
  169. package/lib/dependencies/AMDDefineDependency.js +29 -17
  170. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  171. package/lib/dependencies/AMDPlugin.js +6 -3
  172. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  173. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  174. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  175. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  176. package/lib/dependencies/AMDRequireDependency.js +28 -20
  177. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  178. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  179. package/lib/dependencies/CachedConstDependency.js +9 -1
  180. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  181. package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
  182. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  183. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  184. package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
  185. package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
  186. package/lib/dependencies/CommonJsPlugin.js +7 -4
  187. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  188. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  189. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  190. package/lib/dependencies/ConstDependency.js +22 -12
  191. package/lib/dependencies/ContextDependency.js +13 -2
  192. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  193. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  194. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  195. package/lib/dependencies/ContextElementDependency.js +27 -14
  196. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  197. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  198. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  199. package/lib/dependencies/CssIcssExportDependency.js +682 -368
  200. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  201. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  202. package/lib/dependencies/CssImportDependency.js +37 -1
  203. package/lib/dependencies/CssUrlDependency.js +87 -14
  204. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  205. package/lib/dependencies/DllEntryDependency.js +12 -13
  206. package/lib/dependencies/DynamicExports.js +5 -0
  207. package/lib/dependencies/EntryDependency.js +1 -0
  208. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  209. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  210. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  211. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  212. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  213. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  214. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  215. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  216. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  217. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
  218. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  219. package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
  220. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  221. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
  222. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  223. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  224. package/lib/dependencies/HarmonyExports.js +6 -1
  225. package/lib/dependencies/HarmonyImportDependency.js +59 -3
  226. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  227. package/lib/dependencies/HarmonyImportGuard.js +426 -0
  228. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  229. package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
  230. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  231. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  233. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  234. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  235. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  236. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  237. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  238. package/lib/dependencies/ImportContextDependency.js +9 -9
  239. package/lib/dependencies/ImportDependency.js +92 -3
  240. package/lib/dependencies/ImportEagerDependency.js +2 -0
  241. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  242. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  243. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  244. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  245. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  246. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  247. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  248. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  250. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  251. package/lib/dependencies/ImportParserPlugin.js +114 -27
  252. package/lib/dependencies/ImportPhase.js +17 -11
  253. package/lib/dependencies/ImportPlugin.js +2 -1
  254. package/lib/dependencies/ImportWeakDependency.js +3 -0
  255. package/lib/dependencies/JsonExportsDependency.js +15 -10
  256. package/lib/dependencies/LoaderDependency.js +2 -0
  257. package/lib/dependencies/LoaderImportDependency.js +3 -0
  258. package/lib/dependencies/LoaderPlugin.js +9 -2
  259. package/lib/dependencies/LocalModule.js +15 -12
  260. package/lib/dependencies/LocalModuleDependency.js +15 -13
  261. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  262. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  263. package/lib/dependencies/ModuleDependency.js +14 -0
  264. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  265. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  266. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  267. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  268. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  269. package/lib/dependencies/NullDependency.js +2 -0
  270. package/lib/dependencies/PrefetchDependency.js +1 -0
  271. package/lib/dependencies/ProvidedDependency.js +36 -27
  272. package/lib/dependencies/PureExpressionDependency.js +14 -10
  273. package/lib/dependencies/RequireContextDependency.js +1 -0
  274. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  275. package/lib/dependencies/RequireContextPlugin.js +2 -1
  276. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  277. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  278. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  279. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  280. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  281. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  282. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  283. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  284. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  285. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  286. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  287. package/lib/dependencies/RequireResolveDependency.js +2 -0
  288. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  289. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  290. package/lib/dependencies/StaticExportsDependency.js +13 -10
  291. package/lib/dependencies/SystemPlugin.js +9 -6
  292. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  293. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  294. package/lib/dependencies/URLContextDependency.js +8 -7
  295. package/lib/dependencies/URLDependency.js +157 -33
  296. package/lib/dependencies/URLPlugin.js +2 -0
  297. package/lib/dependencies/UnsupportedDependency.js +12 -13
  298. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  299. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  300. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  301. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  302. package/lib/dependencies/WorkerDependency.js +111 -27
  303. package/lib/dependencies/WorkletDependency.js +278 -0
  304. package/lib/dependencies/getFunctionExpression.js +1 -0
  305. package/lib/dependencies/processExportInfo.js +14 -11
  306. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  307. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  308. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  309. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  310. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  311. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  312. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  313. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  314. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  315. package/lib/electron/ElectronTargetPlugin.js +24 -5
  316. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  317. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  318. package/lib/errors/BuildCycleError.js +1 -1
  319. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  320. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  321. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  322. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  323. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  324. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  325. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  326. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  327. package/lib/errors/JSONParseError.js +115 -0
  328. package/lib/errors/LoaderLoadingError.js +20 -0
  329. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  330. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  331. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  332. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  333. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  334. package/lib/errors/ModuleNotFoundError.js +94 -0
  335. package/lib/errors/ModuleParseError.js +141 -0
  336. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  337. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  338. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  339. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  340. package/lib/errors/NonErrorEmittedError.js +30 -0
  341. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  342. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  343. package/lib/errors/WebpackError.js +84 -0
  344. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  345. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  346. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  347. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
  348. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  349. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  350. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  351. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  352. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  353. package/lib/hmr/lazyCompilationBackend.js +34 -8
  354. package/lib/html/HtmlGenerator.js +1470 -0
  355. package/lib/html/HtmlModule.js +41 -0
  356. package/lib/html/HtmlModulesPlugin.js +1111 -0
  357. package/lib/html/HtmlParser.js +1970 -0
  358. package/lib/html/favicon.svg +1 -0
  359. package/lib/html/syntax.js +9020 -0
  360. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  361. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  362. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  363. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  364. package/lib/ids/IdHelpers.js +25 -2
  365. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  366. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  367. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  368. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  369. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  370. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  371. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  372. package/lib/index.js +66 -15
  373. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  374. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  375. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  376. package/lib/javascript/ChunkHelpers.js +1 -0
  377. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  378. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  379. package/lib/javascript/JavascriptGenerator.js +213 -51
  380. package/lib/javascript/JavascriptModule.js +54 -0
  381. package/lib/javascript/JavascriptModulesPlugin.js +579 -183
  382. package/lib/javascript/JavascriptParser.js +1289 -462
  383. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  384. package/lib/javascript/StartupHelpers.js +5 -0
  385. package/lib/javascript/syntax.js +4380 -0
  386. package/lib/json/JsonData.js +5 -0
  387. package/lib/json/JsonGenerator.js +21 -0
  388. package/lib/json/JsonModule.js +40 -0
  389. package/lib/json/JsonModulesPlugin.js +8 -1
  390. package/lib/json/JsonParser.js +18 -27
  391. package/lib/library/AbstractLibraryPlugin.js +17 -2
  392. package/lib/library/AmdLibraryPlugin.js +8 -0
  393. package/lib/library/AssignLibraryPlugin.js +21 -3
  394. package/lib/library/EnableLibraryPlugin.js +8 -2
  395. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  396. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  397. package/lib/library/JsonpLibraryPlugin.js +8 -0
  398. package/lib/library/ModuleLibraryPlugin.js +154 -7
  399. package/lib/library/SystemLibraryPlugin.js +11 -3
  400. package/lib/library/UmdLibraryPlugin.js +16 -0
  401. package/lib/loaders/LoaderRunner.js +714 -0
  402. package/lib/loaders/loadLoader.js +100 -0
  403. package/lib/logging/Logger.js +17 -0
  404. package/lib/logging/createConsoleLogger.js +7 -0
  405. package/lib/logging/runtime.js +2 -0
  406. package/lib/logging/truncateArgs.js +2 -0
  407. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  408. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  409. package/lib/node/NodeSourcePlugin.js +1 -1
  410. package/lib/node/NodeTargetPlugin.js +4 -63
  411. package/lib/node/NodeTemplatePlugin.js +3 -1
  412. package/lib/node/NodeWatchFileSystem.js +40 -22
  413. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  414. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
  415. package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
  416. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  417. package/lib/node/nodeBuiltins.js +80 -0
  418. package/lib/node/nodeConsole.js +116 -64
  419. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  420. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  421. package/lib/optimize/ConcatenatedModule.js +585 -116
  422. package/lib/optimize/ConstExportsPlugin.js +211 -0
  423. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  424. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  425. package/lib/optimize/InlineExports.js +178 -0
  426. package/lib/optimize/InnerGraph.js +374 -262
  427. package/lib/optimize/InnerGraphPlugin.js +246 -117
  428. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  429. package/lib/optimize/MangleExportsPlugin.js +5 -1
  430. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  431. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  432. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  433. package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
  434. package/lib/optimize/RealContentHashPlugin.js +125 -50
  435. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  436. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  437. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  438. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  439. package/lib/optimize/SplitChunksPlugin.js +54 -6
  440. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  441. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  442. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  443. package/lib/performance/SizeLimitsPlugin.js +8 -2
  444. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  445. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  446. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  448. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  449. package/lib/prefetch/ResourceHintPlugin.js +663 -0
  450. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  451. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  452. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  453. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  454. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  455. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  456. package/lib/rules/RuleSetCompiler.js +132 -0
  457. package/lib/rules/UseEffectRulePlugin.js +10 -3
  458. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  459. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  460. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  461. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  462. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  463. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  464. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  465. package/lib/runtime/CompatRuntimeModule.js +2 -0
  466. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  467. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  468. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  469. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  470. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  471. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  472. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  473. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  474. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  475. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  476. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  477. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  478. package/lib/runtime/HelperRuntimeModule.js +5 -0
  479. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  480. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  481. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  482. package/lib/runtime/NonceRuntimeModule.js +1 -0
  483. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  484. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  485. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  486. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  487. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  488. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  489. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  490. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  491. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  492. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  493. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  494. package/lib/schemes/DataUriPlugin.js +14 -2
  495. package/lib/schemes/FileUriPlugin.js +1 -1
  496. package/lib/schemes/HttpUriPlugin.js +86 -4
  497. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  498. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  499. package/lib/serialization/ArraySerializer.js +6 -8
  500. package/lib/serialization/BinaryMiddleware.js +552 -463
  501. package/lib/serialization/DateObjectSerializer.js +4 -2
  502. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  503. package/lib/serialization/FileMiddleware.js +50 -3
  504. package/lib/serialization/MapObjectSerializer.js +7 -9
  505. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  506. package/lib/serialization/ObjectMiddleware.js +73 -13
  507. package/lib/serialization/PlainObjectSerializer.js +16 -8
  508. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  509. package/lib/serialization/Serializer.js +6 -0
  510. package/lib/serialization/SerializerMiddleware.js +14 -2
  511. package/lib/serialization/SetObjectSerializer.js +6 -8
  512. package/lib/serialization/SingleItemMiddleware.js +3 -0
  513. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  514. package/lib/sharing/ConsumeSharedModule.js +21 -7
  515. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  516. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  517. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  518. package/lib/sharing/ProvideSharedDependency.js +34 -15
  519. package/lib/sharing/ProvideSharedModule.js +42 -12
  520. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  521. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  522. package/lib/sharing/SharePlugin.js +5 -1
  523. package/lib/sharing/ShareRuntimeModule.js +19 -16
  524. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  525. package/lib/sharing/utils.js +9 -1
  526. package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
  527. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  528. package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
  529. package/lib/stats/StatsFactory.js +39 -18
  530. package/lib/stats/StatsPrinter.js +16 -2
  531. package/lib/typescript/TypeScriptPlugin.js +210 -0
  532. package/lib/url/URLParserPlugin.js +111 -23
  533. package/lib/util/ArrayHelpers.js +1 -0
  534. package/lib/util/ArrayQueue.js +10 -5
  535. package/lib/util/AsyncQueue.js +154 -74
  536. package/lib/util/Hash.js +2 -2
  537. package/lib/util/IterableHelpers.js +3 -0
  538. package/lib/util/LazyBucketSortedSet.js +26 -0
  539. package/lib/util/LazySet.js +45 -4
  540. package/lib/util/LocConverter.js +64 -0
  541. package/lib/util/ParallelismFactorCalculator.js +1 -0
  542. package/lib/util/Queue.js +6 -3
  543. package/lib/util/Semaphore.js +15 -1
  544. package/lib/util/SetHelpers.js +4 -1
  545. package/lib/util/SortableSet.js +7 -1
  546. package/lib/util/SourceProcessor.js +119 -0
  547. package/lib/util/StackedCacheMap.js +20 -3
  548. package/lib/util/StackedMap.js +162 -43
  549. package/lib/util/StringXor.js +1 -1
  550. package/lib/util/TupleQueue.js +7 -3
  551. package/lib/util/TupleSet.js +14 -0
  552. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  553. package/lib/util/WeakTupleMap.js +60 -1
  554. package/lib/util/binarySearchBounds.js +3 -2
  555. package/lib/util/chainedImports.js +3 -3
  556. package/lib/util/cleverMerge.js +19 -2
  557. package/lib/util/comparators.js +35 -4
  558. package/lib/util/compileBooleanMatcher.js +9 -0
  559. package/lib/util/concatenate.js +80 -24
  560. package/lib/util/conventions.js +46 -1
  561. package/lib/util/createHash.js +0 -1
  562. package/lib/util/createHooksRegistry.js +43 -0
  563. package/lib/util/createMappings.js +118 -0
  564. package/lib/util/dataURL.js +3 -2
  565. package/lib/util/deprecation.js +19 -0
  566. package/lib/util/deterministicGrouping.js +46 -17
  567. package/lib/util/extractSourceMap.js +2 -1
  568. package/lib/util/extractUrlAndGlobal.js +1 -0
  569. package/lib/util/findGraphRoots.js +7 -0
  570. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  571. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  572. package/lib/util/fs.js +87 -14
  573. package/lib/util/generateDebugId.js +1 -0
  574. package/lib/util/globUtils.js +710 -0
  575. package/lib/util/hash/BatchedHash.js +1 -0
  576. package/lib/util/hash/BulkUpdateHash.js +1 -0
  577. package/lib/util/hash/DebugHash.js +1 -0
  578. package/lib/util/hash/hash-digest.js +32 -15
  579. package/lib/util/hash/md4.js +1 -1
  580. package/lib/util/hash/wasm-hash.js +5 -0
  581. package/lib/util/hash/xxhash64.js +1 -1
  582. package/lib/util/identifier.js +97 -6
  583. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  584. package/lib/util/internalSerializables.js +102 -60
  585. package/lib/util/magicComment.js +149 -7
  586. package/lib/util/makeSerializable.js +7 -0
  587. package/lib/util/memoize.js +2 -0
  588. package/lib/util/mimeTypes.js +176 -0
  589. package/lib/util/nonNumericOnlyHash.js +31 -1
  590. package/lib/util/numberHash.js +2 -2
  591. package/lib/util/parseJson.js +41 -0
  592. package/lib/util/processAsyncTree.js +8 -0
  593. package/lib/util/property.js +9 -2
  594. package/lib/util/publicPathPlaceholder.js +64 -0
  595. package/lib/util/registerExternalSerializer.js +24 -4
  596. package/lib/util/removeBOM.js +1 -0
  597. package/lib/util/runtime.js +32 -0
  598. package/lib/util/semver.js +15 -0
  599. package/lib/util/serialization.js +2 -0
  600. package/lib/util/smartGrouping.js +8 -0
  601. package/lib/util/source.js +23 -0
  602. package/lib/util/topologicalSort.js +69 -0
  603. package/lib/validateSchema.js +1 -0
  604. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  605. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  606. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  607. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  608. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  609. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  610. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  611. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  612. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  613. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  614. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  615. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  616. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  617. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  618. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  619. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  620. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  621. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  622. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  623. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  624. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  625. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  626. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  627. package/lib/web/JsonpTemplatePlugin.js +2 -1
  628. package/lib/webpack.js +78 -1
  629. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  630. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  631. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  632. package/module.d.ts +21 -0
  633. package/package.json +79 -77
  634. package/schemas/WebpackOptions.check.js +1 -1
  635. package/schemas/WebpackOptions.json +1117 -79
  636. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  637. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  638. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  639. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  640. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  641. package/schemas/plugins/HtmlParserOptions.json +3 -0
  642. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  643. package/schemas/plugins/ProgressPlugin.json +38 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  646. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  647. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  648. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  649. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  650. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  652. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  653. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  654. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  655. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  656. package/types.d.ts +8608 -1159
  657. package/lib/CaseSensitiveModulesWarning.js +0 -72
  658. package/lib/GraphHelpers.js +0 -46
  659. package/lib/ModuleParseError.js +0 -125
  660. package/lib/NoModeWarning.js +0 -23
  661. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  662. package/lib/css/walkCssTokens.js +0 -1843
  663. package/lib/util/AppendOnlyStackedSet.js +0 -78
  664. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  665. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  666. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -5,23 +5,58 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const EnvironmentNotSupportAsyncWarning = require("../EnvironmentNotSupportAsyncWarning");
9
8
  const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
9
+ const EnvironmentNotSupportAsyncWarning = require("../errors/EnvironmentNotSupportAsyncWarning");
10
10
  const DynamicExports = require("./DynamicExports");
11
11
  const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency");
12
12
  const HarmonyExports = require("./HarmonyExports");
13
+ const {
14
+ IMPORT_META_NAMES,
15
+ IMPORT_META_STAGE_ESM_DETECTION
16
+ } = require("./ImportMetaPlugin");
17
+ const TopLevelAwaitDependency = require("./TopLevelAwaitDependency");
13
18
 
19
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
14
20
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
15
21
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
22
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
23
 
17
24
  const PLUGIN_NAME = "HarmonyDetectionParserPlugin";
18
25
 
19
26
  module.exports = class HarmonyDetectionParserPlugin {
20
27
  /**
28
+ * Applies the plugin by registering its hooks on the compiler.
21
29
  * @param {JavascriptParser} parser the parser
22
30
  * @returns {void}
23
31
  */
24
32
  apply(parser) {
33
+ // `import.meta`/top-level `await` only parse as modules, so their presence
34
+ // alone marks the module as ESM (matching Node.js syntax detection).
35
+ /**
36
+ * @param {boolean} isStrictHarmony strict harmony mode should be enabled
37
+ * @returns {void}
38
+ */
39
+ const enableHarmony = (isStrictHarmony) => {
40
+ if (HarmonyExports.isEnabled(parser.state)) return;
41
+ const module = parser.state.module;
42
+ const compatDep = new HarmonyCompatibilityDependency();
43
+ compatDep.loc = {
44
+ start: {
45
+ line: -1,
46
+ column: 0
47
+ },
48
+ end: {
49
+ line: -1,
50
+ column: 0
51
+ },
52
+ index: -3
53
+ };
54
+ module.addPresentationalDependency(compatDep);
55
+ DynamicExports.bailout(parser.state);
56
+ HarmonyExports.enable(parser.state, isStrictHarmony);
57
+ parser.scope.isStrict = true;
58
+ };
59
+
25
60
  parser.hooks.program.tap(PLUGIN_NAME, (ast) => {
26
61
  const isStrictHarmony =
27
62
  parser.state.module.type === JAVASCRIPT_MODULE_TYPE_ESM;
@@ -35,43 +70,65 @@ module.exports = class HarmonyDetectionParserPlugin {
35
70
  statement.type === "ExportAllDeclaration"
36
71
  );
37
72
  if (isHarmony) {
38
- const module = parser.state.module;
39
- const compatDep = new HarmonyCompatibilityDependency();
40
- compatDep.loc = {
41
- start: {
42
- line: -1,
43
- column: 0
44
- },
45
- end: {
46
- line: -1,
47
- column: 0
48
- },
49
- index: -3
50
- };
51
- module.addPresentationalDependency(compatDep);
52
- DynamicExports.bailout(parser.state);
53
- HarmonyExports.enable(parser.state, isStrictHarmony);
54
- parser.scope.isStrict = true;
73
+ enableHarmony(isStrictHarmony);
55
74
  }
56
75
  });
57
76
 
58
- parser.hooks.topLevelAwait.tap(PLUGIN_NAME, () => {
77
+ parser.hooks.topLevelAwait.tap(PLUGIN_NAME, (node) => {
59
78
  const module = parser.state.module;
60
- if (!HarmonyExports.isEnabled(parser.state)) {
61
- throw new Error(
62
- "Top-level-await is only supported in EcmaScript Modules"
63
- );
64
- }
79
+ enableHarmony(false);
65
80
  /** @type {BuildMeta} */
66
81
  (module.buildMeta).async = true;
67
- EnvironmentNotSupportAsyncWarning.check(
68
- module,
69
- parser.state.compilation.runtimeTemplate,
70
- "topLevelAwait"
71
- );
82
+ const buildInfo = /** @type {BuildInfo} */ (module.buildInfo);
83
+ if (node.type === "AwaitExpression") {
84
+ // Record for a possible `await` -> `(yield …)` rewrite when the module
85
+ // is lowered to a generator (target without `async`/`await`).
86
+ module.addPresentationalDependency(
87
+ new TopLevelAwaitDependency(
88
+ /** @type {Range} */ (node.range),
89
+ /** @type {Range} */ (node.argument.range)
90
+ )
91
+ );
92
+ } else {
93
+ // `for await…of` can't be expressed as a generator; never lower it.
94
+ buildInfo.usesTopLevelAwaitForOf = true;
95
+ }
96
+ const { runtimeTemplate } = parser.state.compilation;
97
+ if (
98
+ !runtimeTemplate.supportsAsyncFunction() &&
99
+ (!runtimeTemplate.supportsGenerator() ||
100
+ buildInfo.usesTopLevelAwaitForOf)
101
+ ) {
102
+ module.addWarning(
103
+ new EnvironmentNotSupportAsyncWarning(module, "topLevelAwait")
104
+ );
105
+ }
72
106
  });
73
107
 
108
+ // Using `import.meta` only parses as a module, so it marks the module ESM.
109
+ // Non-bailing; staged before the bailing DefinePlugin and ImportMetaPlugin
110
+ // replacement taps so it observes every access; unknown members go
111
+ // through `unhandledExpressionMemberChain`.
112
+ const onImportMeta = () => {
113
+ enableHarmony(false);
114
+ };
115
+ const earlyTapOptions = {
116
+ name: PLUGIN_NAME,
117
+ stage: IMPORT_META_STAGE_ESM_DETECTION
118
+ };
119
+ for (const name of IMPORT_META_NAMES) {
120
+ parser.hooks.expression.for(name).tap(earlyTapOptions, onImportMeta);
121
+ parser.hooks.typeof.for(name).tap(earlyTapOptions, onImportMeta);
122
+ }
123
+ parser.hooks.expressionMemberChain
124
+ .for("import.meta")
125
+ .tap(earlyTapOptions, onImportMeta);
126
+ parser.hooks.unhandledExpressionMemberChain
127
+ .for("import.meta")
128
+ .tap(earlyTapOptions, onImportMeta);
129
+
74
130
  /**
131
+ * Returns true if in harmony.
75
132
  * @returns {boolean | undefined} true if in harmony
76
133
  */
77
134
  const skipInHarmony = () => {
@@ -81,6 +138,7 @@ module.exports = class HarmonyDetectionParserPlugin {
81
138
  };
82
139
 
83
140
  /**
141
+ * Returns null if in harmony.
84
142
  * @returns {null | undefined} null if in harmony
85
143
  */
86
144
  const nullInHarmony = () => {
@@ -89,6 +147,19 @@ module.exports = class HarmonyDetectionParserPlugin {
89
147
  }
90
148
  };
91
149
 
150
+ /**
151
+ * Walks call arguments so import bindings used inside callbacks are
152
+ * still tracked, then skips default AMD/CommonJS handling.
153
+ * @param {import("estree").CallExpression} expr call expression
154
+ * @returns {boolean | undefined} true if in harmony
155
+ */
156
+ const walkArgumentsAndSkipInHarmony = (expr) => {
157
+ if (HarmonyExports.isEnabled(parser.state)) {
158
+ if (expr.arguments) parser.walkExpressions(expr.arguments);
159
+ return true;
160
+ }
161
+ };
162
+
92
163
  const nonHarmonyIdentifiers = ["define", "exports"];
93
164
  for (const identifier of nonHarmonyIdentifiers) {
94
165
  parser.hooks.evaluateTypeof
@@ -97,7 +168,14 @@ module.exports = class HarmonyDetectionParserPlugin {
97
168
  parser.hooks.typeof.for(identifier).tap(PLUGIN_NAME, skipInHarmony);
98
169
  parser.hooks.evaluate.for(identifier).tap(PLUGIN_NAME, nullInHarmony);
99
170
  parser.hooks.expression.for(identifier).tap(PLUGIN_NAME, skipInHarmony);
100
- parser.hooks.call.for(identifier).tap(PLUGIN_NAME, skipInHarmony);
171
+ parser.hooks.call
172
+ .for(identifier)
173
+ .tap(
174
+ PLUGIN_NAME,
175
+ identifier === "define"
176
+ ? walkArgumentsAndSkipInHarmony
177
+ : skipInHarmony
178
+ );
101
179
  }
102
180
  }
103
181
  };
@@ -5,6 +5,10 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const { InlinedUsedName } = require("../optimize/InlineExports");
9
+ const {
10
+ getDependencyUsedByExportsCondition
11
+ } = require("../optimize/InnerGraph");
8
12
  const makeSerializable = require("../util/makeSerializable");
9
13
  const { ExportPresenceModes } = require("./HarmonyImportDependency");
10
14
  const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
@@ -12,13 +16,15 @@ const { ImportPhase } = require("./ImportPhase");
12
16
 
13
17
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
18
  /** @typedef {import("../Dependency")} Dependency */
19
+ /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
15
20
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
21
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
22
+ /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
23
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
18
24
  /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
19
25
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
20
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
21
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
26
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<string[]>} ObjectDeserializerContext */
27
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<string[]>} ObjectSerializerContext */
22
28
  /** @typedef {import("./HarmonyImportDependency").Ids} Ids */
23
29
 
24
30
  /**
@@ -30,6 +36,7 @@ const { ImportPhase } = require("./ImportPhase");
30
36
  */
31
37
  class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDependency {
32
38
  /**
39
+ * Creates an instance of HarmonyEvaluatedImportSpecifierDependency.
33
40
  * @param {string} request the request string
34
41
  * @param {number} sourceOrder source order
35
42
  * @param {Ids} ids ids
@@ -50,6 +57,7 @@ class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDe
50
57
  attributes,
51
58
  []
52
59
  );
60
+ /** @type {string} */
53
61
  this.operator = operator;
54
62
  }
55
63
 
@@ -58,6 +66,18 @@ class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDe
58
66
  }
59
67
 
60
68
  /**
69
+ * Returns function to determine if the connection is active.
70
+ * @param {ModuleGraph} moduleGraph module graph
71
+ * @returns {null | false | GetConditionFn} function to determine if the connection is active
72
+ */
73
+ getCondition(moduleGraph) {
74
+ // Existence check is independent of inlining; skip the base class's
75
+ // inline-sensitivity, which would wrongly deactivate the connection.
76
+ return getDependencyUsedByExportsCondition(this, moduleGraph);
77
+ }
78
+
79
+ /**
80
+ * Serializes this instance into the provided serializer context.
61
81
  * @param {ObjectSerializerContext} context context
62
82
  */
63
83
  serialize(context) {
@@ -67,6 +87,7 @@ class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDe
67
87
  }
68
88
 
69
89
  /**
90
+ * Restores this instance from the provided deserializer context.
70
91
  * @param {ObjectDeserializerContext} context context
71
92
  */
72
93
  deserialize(context) {
@@ -85,6 +106,7 @@ HarmonyEvaluatedImportSpecifierDependency.Template = class HarmonyEvaluatedImpor
85
106
  HarmonyImportSpecifierDependency.Template
86
107
  ) {
87
108
  /**
109
+ * Applies the plugin by registering its hooks on the compiler.
88
110
  * @param {Dependency} dependency the dependency for which the template should be applied
89
111
  * @param {ReplaceSource} source the current replace source which can be modified
90
112
  * @param {DependencyTemplateContext} templateContext the context object
@@ -145,6 +167,14 @@ HarmonyEvaluatedImportSpecifierDependency.Template = class HarmonyEvaluatedImpor
145
167
  } else {
146
168
  const usedName = exportsInfo.getUsedName(ids, runtime);
147
169
 
170
+ if (usedName instanceof InlinedUsedName) {
171
+ // Inlined exports only work with ESM export dependency
172
+ // which only existed in modules with `namespace` exportsType.
173
+ throw new Error(
174
+ "Evaluated import specifier dependency has inlined export name: This should not happen"
175
+ );
176
+ }
177
+
148
178
  const code = this._getCodeForIds(
149
179
  dep,
150
180
  source,
@@ -6,9 +6,11 @@
6
6
  "use strict";
7
7
 
8
8
  const CompatibilityPlugin = require("../CompatibilityPlugin");
9
- const WebpackError = require("../WebpackError");
9
+ const WebpackError = require("../errors/WebpackError");
10
10
  const { getImportAttributes } = require("../javascript/JavascriptParser");
11
- const InnerGraph = require("../optimize/InnerGraph");
11
+ const { CONST_BINDING_TAG } = require("../optimize/ConstExportsPlugin");
12
+ const { toInlinedValue } = require("../optimize/InlineExports");
13
+ const { getInnerGraphUtils } = require("../optimize/InnerGraph");
12
14
  const ConstDependency = require("./ConstDependency");
13
15
  const HarmonyExportExpressionDependency = require("./HarmonyExportExpressionDependency");
14
16
  const HarmonyExportHeaderDependency = require("./HarmonyExportHeaderDependency");
@@ -21,6 +23,7 @@ const {
21
23
  const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
22
24
  const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
23
25
 
26
+ /** @typedef {import("estree").Expression} Expression */
24
27
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
25
28
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
26
29
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
@@ -36,9 +39,11 @@ const PLUGIN_NAME = "HarmonyExportDependencyParserPlugin";
36
39
 
37
40
  module.exports = class HarmonyExportDependencyParserPlugin {
38
41
  /**
42
+ * Creates an instance of HarmonyExportDependencyParserPlugin.
39
43
  * @param {JavascriptParserOptions} options options
40
44
  */
41
45
  constructor(options) {
46
+ /** @type {JavascriptParserOptions} */
42
47
  this.options = options;
43
48
  this.exportPresenceMode = ExportPresenceModes.resolveFromOptions(
44
49
  options.reexportExportsPresence,
@@ -47,6 +52,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
47
52
  }
48
53
 
49
54
  /**
55
+ * Applies the plugin by registering its hooks on the compiler.
50
56
  * @param {JavascriptParser} parser the parser
51
57
  * @returns {void}
52
58
  */
@@ -64,10 +70,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
64
70
  ),
65
71
  /** @type {Range} */ (statement.range)
66
72
  );
67
- dep.loc = Object.create(
68
- /** @type {DependencyLocation} */ (statement.loc)
69
- );
70
- dep.loc.index = -1;
73
+ dep.setLocWithIndex(parser.getLocation(statement), -1);
71
74
  parser.state.module.addPresentationalDependency(dep);
72
75
  return true;
73
76
  });
@@ -78,8 +81,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
78
81
  "",
79
82
  /** @type {Range} */ (statement.range)
80
83
  );
81
- clearDep.loc = /** @type {DependencyLocation} */ (statement.loc);
82
- clearDep.loc.index = -1;
84
+ clearDep.setLocWithIndex(parser.getLocation(statement), -1);
83
85
  parser.state.module.addPresentationalDependency(clearDep);
84
86
 
85
87
  const phase = getImportPhase(parser, statement);
@@ -87,7 +89,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
87
89
  const error = new WebpackError(
88
90
  "Deferred re-export (`export defer * as namespace from '...'`) is not a part of the Import Defer proposal.\nUse the following code instead:\n import defer * as namespace from '...';\n export { namespace };"
89
91
  );
90
- error.loc = statement.loc || undefined;
92
+ error.loc = parser.getLocation(statement) || undefined;
91
93
  parser.state.current.addError(error);
92
94
  }
93
95
  const sideEffectDep = new HarmonyImportSideEffectDependency(
@@ -96,10 +98,12 @@ module.exports = class HarmonyExportDependencyParserPlugin {
96
98
  phase,
97
99
  getImportAttributes(statement)
98
100
  );
99
- sideEffectDep.loc = Object.create(
100
- /** @type {DependencyLocation} */ (statement.loc)
101
- );
102
- sideEffectDep.loc.index = -1;
101
+ sideEffectDep.setLocWithIndex(parser.getLocation(statement), -1);
102
+ // lazy barrel: defer at parse time when the importing module is side-effect-free
103
+ const moduleFactoryMeta = parser.state.module.factoryMeta;
104
+ if (moduleFactoryMeta !== undefined && moduleFactoryMeta.sideEffectFree) {
105
+ sideEffectDep.setLazy(true);
106
+ }
103
107
  parser.state.current.addDependency(sideEffectDep);
104
108
  return true;
105
109
  });
@@ -108,6 +112,11 @@ module.exports = class HarmonyExportDependencyParserPlugin {
108
112
  const exprRange = /** @type {Range} */ (node.range);
109
113
  const statementRange = /** @type {Range} */ (statement.range);
110
114
  const comments = parser.getComments([statementRange[0], exprRange[0]]);
115
+ const constValue = node.type.endsWith("Declaration")
116
+ ? undefined
117
+ : toInlinedValue(
118
+ parser.evaluateExpression(/** @type {Expression} */ (node))
119
+ );
111
120
  const dep = new HarmonyExportExpressionDependency(
112
121
  exprRange,
113
122
  statementRange,
@@ -139,21 +148,20 @@ module.exports = class HarmonyExportDependencyParserPlugin {
139
148
  } `,
140
149
  suffix: `(${node.params.length > 0 ? "" : ") "}`
141
150
  }
142
- : undefined
151
+ : undefined,
152
+ constValue
143
153
  );
144
154
  dep.isAnonymousDefault =
145
- node.type === "ArrowFunctionExpression" ||
146
- ((node.type === "FunctionDeclaration" ||
147
- node.type === "FunctionExpression" ||
148
- node.type === "ClassDeclaration" ||
149
- node.type === "ClassExpression") &&
150
- !node.id);
151
- dep.loc = Object.create(
152
- /** @type {DependencyLocation} */ (statement.loc)
153
- );
154
- dep.loc.index = -1;
155
+ this.options.anonymousDefaultExportName !== false &&
156
+ (node.type === "ArrowFunctionExpression" ||
157
+ ((node.type === "FunctionDeclaration" ||
158
+ node.type === "FunctionExpression" ||
159
+ node.type === "ClassDeclaration" ||
160
+ node.type === "ClassExpression") &&
161
+ !node.id));
162
+ dep.setLocWithIndex(parser.getLocation(statement), -1);
155
163
  parser.state.current.addDependency(dep);
156
- InnerGraph.addVariableUsage(
164
+ getInnerGraphUtils(parser.state.compilation).addVariableUsage(
157
165
  parser,
158
166
  node.type.endsWith("Declaration") &&
159
167
  /** @type {FunctionDeclaration | ClassDeclaration} */ (node).id
@@ -184,7 +192,15 @@ module.exports = class HarmonyExportDependencyParserPlugin {
184
192
  const harmonyNamedExports = (parser.state.harmonyNamedExports =
185
193
  parser.state.harmonyNamedExports || new Set());
186
194
  harmonyNamedExports.add(name);
187
- InnerGraph.addVariableUsage(parser, id, name);
195
+ getInnerGraphUtils(parser.state.compilation).addVariableUsage(
196
+ parser,
197
+ id,
198
+ name
199
+ );
200
+ const tagData = settings
201
+ ? undefined
202
+ : /** @type {{ value?: import("../optimize/InlineExports").InlinedValue } | undefined} */
203
+ (parser.getTagData(id, CONST_BINDING_TAG));
188
204
  const dep = settings
189
205
  ? new HarmonyExportImportedSpecifierDependency(
190
206
  settings.source,
@@ -198,11 +214,24 @@ module.exports = class HarmonyExportDependencyParserPlugin {
198
214
  settings.phase,
199
215
  settings.attributes
200
216
  )
201
- : new HarmonyExportSpecifierDependency(id, name);
202
- dep.loc = Object.create(
203
- /** @type {DependencyLocation} */ (statement.loc)
217
+ : new HarmonyExportSpecifierDependency(
218
+ id,
219
+ name,
220
+ tagData ? tagData.value || null : undefined
221
+ );
222
+ // lazy barrel: defer the re-export at parse time when the importing module is side-effect-free
223
+ const moduleFactoryMeta = parser.state.module.factoryMeta;
224
+ if (
225
+ settings &&
226
+ moduleFactoryMeta !== undefined &&
227
+ moduleFactoryMeta.sideEffectFree
228
+ ) {
229
+ dep.setLazy(true);
230
+ }
231
+ dep.setLocWithIndex(
232
+ parser.getLocation(statement),
233
+ /** @type {number} */ (idx)
204
234
  );
205
- dep.loc.index = idx;
206
235
  const isAsiSafe = !parser.isAsiPosition(
207
236
  /** @type {Range} */
208
237
  (statement.range)[0]
@@ -246,10 +275,18 @@ module.exports = class HarmonyExportDependencyParserPlugin {
246
275
  if (harmonyStarExports) {
247
276
  harmonyStarExports.push(dep);
248
277
  }
249
- dep.loc = Object.create(
250
- /** @type {DependencyLocation} */ (statement.loc)
278
+ // lazy barrel: defer the re-export at parse time when the importing module is side-effect-free
279
+ const moduleFactoryMeta = parser.state.module.factoryMeta;
280
+ if (
281
+ moduleFactoryMeta !== undefined &&
282
+ moduleFactoryMeta.sideEffectFree
283
+ ) {
284
+ dep.setLazy(true);
285
+ }
286
+ dep.setLocWithIndex(
287
+ parser.getLocation(statement),
288
+ /** @type {number} */ (idx)
251
289
  );
252
- dep.loc.index = idx;
253
290
  const isAsiSafe = !parser.isAsiPosition(
254
291
  /** @type {Range} */
255
292
  (statement.range)[0]