@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
@@ -7,7 +7,6 @@
7
7
 
8
8
  const { OriginalSource, RawSource } = require("webpack-sources");
9
9
  const AsyncDependenciesBlock = require("./AsyncDependenciesBlock");
10
- const { makeWebpackError } = require("./HookWebpackError");
11
10
  const Module = require("./Module");
12
11
  const {
13
12
  JAVASCRIPT_TYPE,
@@ -16,11 +15,12 @@ const {
16
15
  const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
17
16
  const RuntimeGlobals = require("./RuntimeGlobals");
18
17
  const Template = require("./Template");
19
- const WebpackError = require("./WebpackError");
20
18
  const {
21
19
  getOutgoingAsyncModules
22
20
  } = require("./async-modules/AsyncModuleHelpers");
23
21
  const { ImportPhase, ImportPhaseUtils } = require("./dependencies/ImportPhase");
22
+ const { makeWebpackError } = require("./errors/HookWebpackError");
23
+ const WebpackError = require("./errors/WebpackError");
24
24
  const {
25
25
  compareLocations,
26
26
  compareModulesById,
@@ -34,6 +34,7 @@ const {
34
34
  parseResource
35
35
  } = require("./util/identifier");
36
36
  const makeSerializable = require("./util/makeSerializable");
37
+ const { propertyAccess } = require("./util/property");
37
38
 
38
39
  /** @typedef {import("webpack-sources").Source} Source */
39
40
  /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
@@ -48,6 +49,7 @@ const makeSerializable = require("./util/makeSerializable");
48
49
  /** @typedef {import("./Dependency")} Dependency */
49
50
  /** @typedef {import("./Dependency").RawReferencedExports} RawReferencedExports */
50
51
  /** @typedef {import("./Generator").SourceTypes} SourceTypes */
52
+ /** @typedef {import("./FileSystemInfo").Snapshot} Snapshot */
51
53
  /** @typedef {import("./Module").BuildCallback} BuildCallback */
52
54
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
53
55
  /** @typedef {import("./Module").FileSystemDependencies} FileSystemDependencies */
@@ -65,8 +67,8 @@ const makeSerializable = require("./util/makeSerializable");
65
67
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
66
68
  /** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */
67
69
  /** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
68
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
69
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
70
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext<[string, boolean]>} ObjectDeserializerContext */
71
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext<[string, boolean]>} ObjectSerializerContext */
70
72
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
71
73
  /** @typedef {import("./dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
72
74
 
@@ -89,6 +91,11 @@ const makeSerializable = require("./util/makeSerializable");
89
91
  * @property {string | null=} layer
90
92
  * @property {ImportAttributes=} attributes
91
93
  * @property {ImportPhaseType=} phase
94
+ * @property {string[]=} patterns glob patterns for import.meta.glob
95
+ * @property {string=} requestContext importer context for import.meta.glob
96
+ * @property {string=} importName import selection for import.meta.glob
97
+ * @property {boolean=} exhaustive exhaustive mode for import.meta.glob
98
+ * @property {boolean=} caseSensitive case-sensitive matching for import.meta.glob
92
99
  */
93
100
 
94
101
  /**
@@ -121,6 +128,14 @@ const makeSerializable = require("./util/makeSerializable");
121
128
  /** @typedef {Record<string, ModuleId>} UserRequestMap */
122
129
  /** @typedef {Record<ModuleId, ModuleId[]>} UserRequestsMap */
123
130
 
131
+ /**
132
+ * Defines the build info properties specific to context modules.
133
+ * @typedef {object} KnownContextModuleBuildInfo
134
+ * @property {(Snapshot | null)=} snapshot
135
+ */
136
+
137
+ /** @typedef {BuildInfo & KnownContextModuleBuildInfo} ContextModuleBuildInfo */
138
+
124
139
  class ContextModule extends Module {
125
140
  /**
126
141
  * @param {ResolveDependencies} resolveDependencies function to get dependencies in this context
@@ -156,10 +171,15 @@ class ContextModule extends Module {
156
171
  };
157
172
  }
158
173
 
174
+ // Redeclared with the context module specific shape
175
+ /** @type {ContextModuleBuildInfo | undefined} */
176
+ this.buildInfo = undefined;
177
+
159
178
  // Info from Factory
160
179
  /** @type {ResolveDependencies | undefined} */
161
180
  this.resolveDependencies = resolveDependencies;
162
181
  if (options && options.resolveOptions !== undefined) {
182
+ /** @type {ResolveOptions | undefined} */
163
183
  this.resolveOptions = options.resolveOptions;
164
184
  }
165
185
 
@@ -167,11 +187,14 @@ class ContextModule extends Module {
167
187
  throw new Error("options.mode is a required option");
168
188
  }
169
189
 
190
+ /** @type {string} */
170
191
  this._identifier = this._createIdentifier();
192
+ /** @type {boolean} */
171
193
  this._forceBuild = true;
172
194
  }
173
195
 
174
196
  /**
197
+ * Returns the source types this module can generate.
175
198
  * @returns {SourceTypes} types available (do not mutate)
176
199
  */
177
200
  getSourceTypes() {
@@ -209,7 +232,14 @@ class ContextModule extends Module {
209
232
  const str = stripSlash
210
233
  ? regexString.source + regexString.flags
211
234
  : `${regexString}`;
212
- return str.replace(/!/g, "%21").replace(/\|/g, "%7C");
235
+ // Escape chars that are structural in the identifier/source-name URL
236
+ // (`!`/`|` separators, `?` query, `#` fragment) so a regex like
237
+ // `(?:a|b)` isn't misread and truncated when it becomes a source name.
238
+ return str
239
+ .replace(/!/g, "%21")
240
+ .replace(/\|/g, "%7C")
241
+ .replace(/\?/g, "%3F")
242
+ .replace(/#/g, "%23");
213
243
  }
214
244
 
215
245
  _createIdentifier() {
@@ -236,6 +266,11 @@ class ContextModule extends Module {
236
266
  }
237
267
  if (this.options.regExp) {
238
268
  identifier += `|${this._prettyRegExp(this.options.regExp, false)}`;
269
+ } else if (this.options.patterns) {
270
+ identifier += `|patterns: ${this.options.patterns.join(", ")}`;
271
+ }
272
+ if (this.options.requestContext) {
273
+ identifier += `|requestContext: ${this.options.requestContext}`;
239
274
  }
240
275
  if (this.options.include) {
241
276
  identifier += `|include: ${this._prettyRegExp(
@@ -254,6 +289,15 @@ class ContextModule extends Module {
254
289
  this.options.referencedExports
255
290
  )}`;
256
291
  }
292
+ if (this.options.importName) {
293
+ identifier += `|import: ${this.options.importName}`;
294
+ }
295
+ if (this.options.exhaustive) {
296
+ identifier += "|exhaustive";
297
+ }
298
+ if (this.options.caseSensitive === false) {
299
+ identifier += "|case-insensitive";
300
+ }
257
301
  if (this.options.chunkName) {
258
302
  identifier += `|chunkName: ${this.options.chunkName}`;
259
303
  }
@@ -280,6 +324,7 @@ class ContextModule extends Module {
280
324
  }
281
325
 
282
326
  /**
327
+ * Returns the unique identifier used to reference this module.
283
328
  * @returns {string} a unique identifier of the module
284
329
  */
285
330
  identifier() {
@@ -287,6 +332,7 @@ class ContextModule extends Module {
287
332
  }
288
333
 
289
334
  /**
335
+ * Returns a human-readable identifier for this module.
290
336
  * @param {RequestShortener} requestShortener the request shortener
291
337
  * @returns {string} a user readable identifier of the module
292
338
  */
@@ -320,6 +366,17 @@ class ContextModule extends Module {
320
366
  }
321
367
  if (this.options.regExp) {
322
368
  identifier += ` ${this._prettyRegExp(this.options.regExp)}`;
369
+ } else if (this.options.patterns) {
370
+ identifier += ` patterns: ${this.options.patterns.join(", ")}`;
371
+ }
372
+ if (this.options.requestContext) {
373
+ identifier += ` requestContext: ${this.options.requestContext}`;
374
+ }
375
+ if (this.options.exhaustive) {
376
+ identifier += " exhaustive";
377
+ }
378
+ if (this.options.caseSensitive === false) {
379
+ identifier += " case-insensitive";
323
380
  }
324
381
  if (this.options.include) {
325
382
  identifier += ` include: ${this._prettyRegExp(this.options.include)}`;
@@ -353,6 +410,7 @@ class ContextModule extends Module {
353
410
  }
354
411
 
355
412
  /**
413
+ * Gets the library identifier.
356
414
  * @param {LibIdentOptions} options options
357
415
  * @returns {LibIdent | null} an identifier for library inclusion
358
416
  */
@@ -398,6 +456,17 @@ class ContextModule extends Module {
398
456
  }
399
457
  if (this.options.regExp) {
400
458
  identifier += ` ${this._prettyRegExp(this.options.regExp)}`;
459
+ } else if (this.options.patterns) {
460
+ identifier += ` patterns: ${this.options.patterns.join(", ")}`;
461
+ }
462
+ if (this.options.requestContext) {
463
+ identifier += ` requestContext: ${this.options.requestContext}`;
464
+ }
465
+ if (this.options.exhaustive) {
466
+ identifier += " exhaustive";
467
+ }
468
+ if (this.options.caseSensitive === false) {
469
+ identifier += " case-insensitive";
401
470
  }
402
471
  if (this.options.include) {
403
472
  identifier += ` include: ${this._prettyRegExp(this.options.include)}`;
@@ -415,6 +484,7 @@ class ContextModule extends Module {
415
484
  }
416
485
 
417
486
  /**
487
+ * Invalidates the cached state associated with this value.
418
488
  * @returns {void}
419
489
  */
420
490
  invalidateBuild() {
@@ -422,6 +492,7 @@ class ContextModule extends Module {
422
492
  }
423
493
 
424
494
  /**
495
+ * Checks whether the module needs to be rebuilt for the current build state.
425
496
  * @param {NeedBuildContext} context context info
426
497
  * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
427
498
  * @returns {void}
@@ -430,7 +501,7 @@ class ContextModule extends Module {
430
501
  // build if enforced
431
502
  if (this._forceBuild) return callback(null, true);
432
503
 
433
- const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
504
+ const buildInfo = /** @type {ContextModuleBuildInfo} */ (this.buildInfo);
434
505
 
435
506
  // always build when we have no snapshot and context
436
507
  if (!buildInfo.snapshot) {
@@ -443,6 +514,7 @@ class ContextModule extends Module {
443
514
  }
444
515
 
445
516
  /**
517
+ * Builds the module using the provided compilation context.
446
518
  * @param {WebpackOptions} options webpack options
447
519
  * @param {Compilation} compilation the compilation
448
520
  * @param {ResolverWithOptions} resolver the resolver
@@ -457,9 +529,18 @@ class ContextModule extends Module {
457
529
  exportsType: "default",
458
530
  defaultObject: "redirect-warn"
459
531
  };
532
+
533
+ // Respect the global module parser `overrideStrict` option
534
+ const overrideStrict =
535
+ options.module.parser &&
536
+ options.module.parser.javascript &&
537
+ options.module.parser.javascript.overrideStrict;
538
+
460
539
  this.buildInfo = {
540
+ strict: overrideStrict ? overrideStrict === "strict" : undefined,
461
541
  snapshot: undefined
462
542
  };
543
+
463
544
  this.dependencies.length = 0;
464
545
  this.blocks.length = 0;
465
546
  const startTime = Date.now();
@@ -576,6 +657,7 @@ class ContextModule extends Module {
576
657
  }
577
658
 
578
659
  /**
660
+ * Adds the provided file dependencies to the module.
579
661
  * @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
580
662
  * @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
581
663
  * @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
@@ -701,11 +783,13 @@ class ContextModule extends Module {
701
783
 
702
784
  /**
703
785
  * @param {FakeMap | FakeMapType} fakeMap fake map
786
+ * @param {RuntimeTemplate=} runtimeTemplate the runtime template
704
787
  * @returns {string} fake map init statement
705
788
  */
706
- getFakeMapInitStatement(fakeMap) {
789
+ getFakeMapInitStatement(fakeMap, runtimeTemplate) {
790
+ const decl = runtimeTemplate ? runtimeTemplate.renderConst() : "var";
707
791
  return typeof fakeMap === "object"
708
- ? `var fakeMap = ${JSON.stringify(fakeMap, null, "\t")};`
792
+ ? `${decl} fakeMap = ${JSON.stringify(fakeMap, null, "\t")};`
709
793
  : "";
710
794
  }
711
795
 
@@ -743,11 +827,13 @@ class ContextModule extends Module {
743
827
 
744
828
  /**
745
829
  * @param {false | UserRequestsMap} asyncDepsMap fake map
830
+ * @param {RuntimeTemplate=} runtimeTemplate the runtime template
746
831
  * @returns {string} async deps map init statement
747
832
  */
748
- getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap) {
833
+ getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap, runtimeTemplate) {
834
+ const decl = runtimeTemplate ? runtimeTemplate.renderConst() : "var";
749
835
  return typeof asyncDepsMap === "object"
750
- ? `var asyncDepsMap = ${JSON.stringify(asyncDepsMap, null, "\t")};`
836
+ ? `${decl} asyncDepsMap = ${JSON.stringify(asyncDepsMap, null, "\t")};`
751
837
  : "";
752
838
  }
753
839
 
@@ -797,23 +883,25 @@ class ContextModule extends Module {
797
883
  * @param {Dependency[]} dependencies dependencies
798
884
  * @param {ModuleId} id module id
799
885
  * @param {ChunkGraph} chunkGraph the chunk graph
886
+ * @param {RuntimeTemplate=} runtimeTemplate the runtime template
800
887
  * @returns {string} source code
801
888
  */
802
- getSyncSource(dependencies, id, chunkGraph) {
889
+ getSyncSource(dependencies, id, chunkGraph, runtimeTemplate) {
803
890
  const map = this.getUserRequestMap(dependencies, chunkGraph);
804
891
  const fakeMap = this.getFakeMap(dependencies, chunkGraph);
805
892
  const returnModuleObject = this.getReturnModuleObjectSource(fakeMap);
893
+ const cst = runtimeTemplate ? runtimeTemplate.renderConst() : "var";
806
894
 
807
- return `var map = ${JSON.stringify(map, null, "\t")};
808
- ${this.getFakeMapInitStatement(fakeMap)}
895
+ return `${cst} map = ${JSON.stringify(map, null, "\t")};
896
+ ${this.getFakeMapInitStatement(fakeMap, runtimeTemplate)}
809
897
 
810
898
  function webpackContext(req) {
811
- var id = webpackContextResolve(req);
899
+ ${cst} id = webpackContextResolve(req);
812
900
  return ${returnModuleObject};
813
901
  }
814
902
  function webpackContextResolve(req) {
815
903
  if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {
816
- var e = new Error("Cannot find module '" + req + "'");
904
+ ${cst} e = new Error("Cannot find module '" + req + "'");
817
905
  e.code = 'MODULE_NOT_FOUND';
818
906
  throw e;
819
907
  }
@@ -831,20 +919,22 @@ webpackContext.id = ${JSON.stringify(id)};`;
831
919
  * @param {Dependency[]} dependencies dependencies
832
920
  * @param {ModuleId} id module id
833
921
  * @param {ChunkGraph} chunkGraph the chunk graph
922
+ * @param {RuntimeTemplate=} runtimeTemplate the runtime template
834
923
  * @returns {string} source code
835
924
  */
836
- getWeakSyncSource(dependencies, id, chunkGraph) {
925
+ getWeakSyncSource(dependencies, id, chunkGraph, runtimeTemplate) {
837
926
  const map = this.getUserRequestMap(dependencies, chunkGraph);
838
927
  const fakeMap = this.getFakeMap(dependencies, chunkGraph);
839
928
  const returnModuleObject = this.getReturnModuleObjectSource(fakeMap);
929
+ const cst = runtimeTemplate ? runtimeTemplate.renderConst() : "var";
840
930
 
841
- return `var map = ${JSON.stringify(map, null, "\t")};
842
- ${this.getFakeMapInitStatement(fakeMap)}
931
+ return `${cst} map = ${JSON.stringify(map, null, "\t")};
932
+ ${this.getFakeMapInitStatement(fakeMap, runtimeTemplate)}
843
933
 
844
934
  function webpackContext(req) {
845
- var id = webpackContextResolve(req);
935
+ ${cst} id = webpackContextResolve(req);
846
936
  if(!${RuntimeGlobals.moduleFactories}[id]) {
847
- var e = new Error("Module '" + req + "' ('" + id + "') is not available (weak dependency)");
937
+ ${cst} e = new Error("Module '" + req + "' ('" + id + "') is not available (weak dependency)");
848
938
  e.code = 'MODULE_NOT_FOUND';
849
939
  throw e;
850
940
  }
@@ -852,7 +942,7 @@ function webpackContext(req) {
852
942
  }
853
943
  function webpackContextResolve(req) {
854
944
  if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {
855
- var e = new Error("Cannot find module '" + req + "'");
945
+ ${cst} e = new Error("Cannot find module '" + req + "'");
856
946
  e.code = 'MODULE_NOT_FOUND';
857
947
  throw e;
858
948
  }
@@ -886,10 +976,11 @@ module.exports = webpackContext;`;
886
976
  true,
887
977
  asyncDepsMap ? "asyncDepsMap[id]" : undefined
888
978
  );
979
+ const cst = runtimeTemplate.renderConst();
889
980
 
890
- return `var map = ${JSON.stringify(map, null, "\t")};
891
- ${this.getFakeMapInitStatement(fakeMap)}
892
- ${this.getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap)}
981
+ return `${cst} map = ${JSON.stringify(map, null, "\t")};
982
+ ${this.getFakeMapInitStatement(fakeMap, runtimeTemplate)}
983
+ ${this.getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap, runtimeTemplate)}
893
984
 
894
985
  function webpackAsyncContext(req) {
895
986
  return webpackAsyncContextResolve(req).then(${runtimeTemplate.basicFunction(
@@ -897,7 +988,7 @@ function webpackAsyncContext(req) {
897
988
  [
898
989
  `if(!${RuntimeGlobals.moduleFactories}[id]) {`,
899
990
  Template.indent([
900
- 'var e = new Error("Module \'" + req + "\' (\'" + id + "\') is not available (weak dependency)");',
991
+ `${cst} e = new Error("Module '" + req + "' ('" + id + "') is not available (weak dependency)");`,
901
992
  "e.code = 'MODULE_NOT_FOUND';",
902
993
  "throw e;"
903
994
  ]),
@@ -912,7 +1003,7 @@ function webpackAsyncContextResolve(req) {
912
1003
  return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
913
1004
  `if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {`,
914
1005
  Template.indent([
915
- 'var e = new Error("Cannot find module \'" + req + "\'");',
1006
+ `${cst} e = new Error("Cannot find module '" + req + "'");`,
916
1007
  "e.code = 'MODULE_NOT_FOUND';",
917
1008
  "throw e;"
918
1009
  ]),
@@ -952,9 +1043,10 @@ module.exports = webpackAsyncContext;`;
952
1043
  "id"
953
1044
  );
954
1045
 
955
- return `var map = ${JSON.stringify(map, null, "\t")};
956
- ${this.getFakeMapInitStatement(fakeMap)}
957
- ${this.getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap)}
1046
+ const cst = runtimeTemplate.renderConst();
1047
+ return `${cst} map = ${JSON.stringify(map, null, "\t")};
1048
+ ${this.getFakeMapInitStatement(fakeMap, runtimeTemplate)}
1049
+ ${this.getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap, runtimeTemplate)}
958
1050
 
959
1051
  function webpackAsyncContext(req) {
960
1052
  return webpackAsyncContextResolve(req).then(${thenFunction});
@@ -965,7 +1057,7 @@ function webpackAsyncContextResolve(req) {
965
1057
  return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
966
1058
  `if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {`,
967
1059
  Template.indent([
968
- 'var e = new Error("Cannot find module \'" + req + "\'");',
1060
+ `${cst} e = new Error("Cannot find module '" + req + "'");`,
969
1061
  "e.code = 'MODULE_NOT_FOUND';",
970
1062
  "throw e;"
971
1063
  ]),
@@ -1019,9 +1111,10 @@ module.exports = webpackAsyncContext;`;
1019
1111
  "id"
1020
1112
  );
1021
1113
 
1022
- return `var map = ${JSON.stringify(map, null, "\t")};
1023
- ${this.getFakeMapInitStatement(fakeMap)}
1024
- ${this.getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap)}
1114
+ const cst = runtimeTemplate.renderConst();
1115
+ return `${cst} map = ${JSON.stringify(map, null, "\t")};
1116
+ ${this.getFakeMapInitStatement(fakeMap, runtimeTemplate)}
1117
+ ${this.getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap, runtimeTemplate)}
1025
1118
 
1026
1119
  function webpackAsyncContext(req) {
1027
1120
  return webpackAsyncContextResolve(req).then(${thenFunction});
@@ -1030,7 +1123,7 @@ function webpackAsyncContextResolve(req) {
1030
1123
  return ${promise}.then(${runtimeTemplate.basicFunction("", [
1031
1124
  `if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {`,
1032
1125
  Template.indent([
1033
- 'var e = new Error("Cannot find module \'" + req + "\'");',
1126
+ `${cst} e = new Error("Cannot find module '" + req + "'");`,
1034
1127
  "e.code = 'MODULE_NOT_FOUND';",
1035
1128
  "throw e;"
1036
1129
  ]),
@@ -1140,7 +1233,8 @@ module.exports = webpackAsyncContext;`;
1140
1233
  }
1141
1234
 
1142
1235
  const chunksPosition = hasFakeMap ? 2 : 1;
1143
- const asyncDepsPosition = chunksPosition + 1;
1236
+ // No chunks slot is pushed when `hasNoChunk`, so `asyncDeps` sits at `chunksPosition`.
1237
+ const asyncDepsPosition = hasNoChunk ? chunksPosition : chunksPosition + 1;
1144
1238
  const requestPrefix = hasNoChunk
1145
1239
  ? "Promise.resolve()"
1146
1240
  : hasMultipleOrNoChunks
@@ -1153,6 +1247,7 @@ module.exports = webpackAsyncContext;`;
1153
1247
  shortMode ? "invalid" : "ids[1]"
1154
1248
  );
1155
1249
 
1250
+ const cst = runtimeTemplate.renderConst();
1156
1251
  const webpackAsyncContext =
1157
1252
  requestPrefix === "Promise.resolve()"
1158
1253
  ? `
@@ -1160,12 +1255,12 @@ function webpackAsyncContext(req) {
1160
1255
  return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
1161
1256
  `if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {`,
1162
1257
  Template.indent([
1163
- 'var e = new Error("Cannot find module \'" + req + "\'");',
1258
+ `${cst} e = new Error("Cannot find module '" + req + "'");`,
1164
1259
  "e.code = 'MODULE_NOT_FOUND';",
1165
1260
  "throw e;"
1166
1261
  ]),
1167
1262
  "}",
1168
- shortMode ? "var id = map[req];" : "var ids = map[req], id = ids[0];",
1263
+ shortMode ? `${cst} id = map[req];` : `${cst} ids = map[req], id = ids[0];`,
1169
1264
  `return ${returnModuleObject};`
1170
1265
  ])});
1171
1266
  }`
@@ -1173,7 +1268,7 @@ function webpackAsyncContext(req) {
1173
1268
  try {
1174
1269
  if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {
1175
1270
  return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
1176
- 'var e = new Error("Cannot find module \'" + req + "\'");',
1271
+ `${cst} e = new Error("Cannot find module '" + req + "'");`,
1177
1272
  "e.code = 'MODULE_NOT_FOUND';",
1178
1273
  "throw e;"
1179
1274
  ])});
@@ -1182,11 +1277,11 @@ function webpackAsyncContext(req) {
1182
1277
  return Promise.reject(err);
1183
1278
  }
1184
1279
 
1185
- var ids = map[req], id = ids[0];
1280
+ ${cst} ids = map[req], id = ids[0];
1186
1281
  return ${requestPrefix}.then(${runtimeTemplate.returningFunction(returnModuleObject)});
1187
1282
  }`;
1188
1283
 
1189
- return `var map = ${JSON.stringify(map, null, "\t")};
1284
+ return `${cst} map = ${JSON.stringify(map, null, "\t")};
1190
1285
  ${webpackAsyncContext}
1191
1286
  webpackAsyncContext.keys = ${runtimeTemplate.returningFunction(
1192
1287
  "Object.keys(map)"
@@ -1202,7 +1297,7 @@ module.exports = webpackAsyncContext;`;
1202
1297
  */
1203
1298
  getSourceForEmptyContext(id, runtimeTemplate) {
1204
1299
  return `function webpackEmptyContext(req) {
1205
- var e = new Error("Cannot find module '" + req + "'");
1300
+ ${runtimeTemplate.renderConst()} e = new Error("Cannot find module '" + req + "'");
1206
1301
  e.code = 'MODULE_NOT_FOUND';
1207
1302
  throw e;
1208
1303
  }
@@ -1222,7 +1317,7 @@ module.exports = webpackEmptyContext;`;
1222
1317
  // Here Promise.resolve().then() is used instead of new Promise() to prevent
1223
1318
  // uncaught exception popping up in devtools
1224
1319
  return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
1225
- 'var e = new Error("Cannot find module \'" + req + "\'");',
1320
+ `${runtimeTemplate.renderConst()} e = new Error("Cannot find module '" + req + "'");`,
1226
1321
  "e.code = 'MODULE_NOT_FOUND';",
1227
1322
  "throw e;"
1228
1323
  ])});
@@ -1233,13 +1328,196 @@ webpackEmptyAsyncContext.id = ${JSON.stringify(id)};
1233
1328
  module.exports = webpackEmptyAsyncContext;`;
1234
1329
  }
1235
1330
 
1331
+ /**
1332
+ * @returns {string | undefined} import property access
1333
+ */
1334
+ getImportPropertyAccess() {
1335
+ const importName = this.options.importName;
1336
+ if (!importName || importName === "*") return;
1337
+ return propertyAccess([importName]);
1338
+ }
1339
+
1340
+ /**
1341
+ * @param {number} index index
1342
+ * @param {string} userRequest user request
1343
+ * @param {string} value value expression
1344
+ * @param {string[]} entries entries
1345
+ * @returns {void}
1346
+ */
1347
+ appendGlobMapEntry(index, userRequest, value, entries) {
1348
+ entries.push(`\n ${JSON.stringify(userRequest)}: ${value}`);
1349
+ }
1350
+
1351
+ /**
1352
+ * @param {string} entries entries
1353
+ * @returns {string} object export source
1354
+ */
1355
+ getGlobObjectExportSource(entries) {
1356
+ return `\nmodule.exports = {${entries}\n};\n`;
1357
+ }
1358
+
1359
+ /**
1360
+ * @returns {string} empty object export source
1361
+ */
1362
+ getEmptyObjectExportSource() {
1363
+ return "\nmodule.exports = {};\n";
1364
+ }
1365
+
1366
+ /**
1367
+ * @param {AsyncDependenciesBlock[]} blocks blocks
1368
+ * @param {ImportPhaseType} phase import phase
1369
+ * @param {object} context context
1370
+ * @param {RuntimeTemplate} context.runtimeTemplate runtime template
1371
+ * @param {ChunkGraph} context.chunkGraph chunk graph
1372
+ * @param {RuntimeRequirements=} context.runtimeRequirements runtime requirements
1373
+ * @returns {string} glob lazy source
1374
+ */
1375
+ getGlobLazySource(
1376
+ blocks,
1377
+ phase,
1378
+ { runtimeTemplate, chunkGraph, runtimeRequirements }
1379
+ ) {
1380
+ if (!blocks || blocks.length === 0) {
1381
+ return this.getEmptyObjectExportSource();
1382
+ }
1383
+ const moduleGraph = chunkGraph.moduleGraph;
1384
+ const globImportAccess = this.getImportPropertyAccess();
1385
+ /** @type {RuntimeRequirements} */
1386
+ const localRuntimeRequirements = runtimeRequirements || new Set();
1387
+ /** @type {{ userRequest: string, block: AsyncDependenciesBlock, dependency: ContextElementDependency }[]} */
1388
+ const blockInfo = blocks
1389
+ .map((block) => {
1390
+ const dependency =
1391
+ /** @type {ContextElementDependency} */
1392
+ (block.dependencies[0]);
1393
+ return {
1394
+ userRequest: dependency.userRequest,
1395
+ block,
1396
+ dependency
1397
+ };
1398
+ })
1399
+ .sort((a, b) =>
1400
+ a.userRequest < b.userRequest
1401
+ ? -1
1402
+ : a.userRequest > b.userRequest
1403
+ ? 1
1404
+ : 0
1405
+ );
1406
+ /** @type {string[]} */
1407
+ const entries = [];
1408
+ for (let i = 0; i < blockInfo.length; i++) {
1409
+ const info = blockInfo[i];
1410
+ let importPromise = runtimeTemplate.moduleNamespacePromise({
1411
+ chunkGraph,
1412
+ block: info.block,
1413
+ module: /** @type {Module} */ (moduleGraph.getModule(info.dependency)),
1414
+ request: info.userRequest,
1415
+ message: "import.meta.glob",
1416
+ strict: this.options.namespaceObject === "strict",
1417
+ dependency: info.dependency,
1418
+ runtimeRequirements: localRuntimeRequirements
1419
+ });
1420
+ if (globImportAccess) {
1421
+ importPromise = `${importPromise}.then(function(m) { return m${globImportAccess}; })`;
1422
+ }
1423
+ this.appendGlobMapEntry(
1424
+ i,
1425
+ info.userRequest,
1426
+ `function() { return ${importPromise}; }`,
1427
+ entries
1428
+ );
1429
+ }
1430
+ return this.getGlobObjectExportSource(entries.join(","));
1431
+ }
1432
+
1433
+ /**
1434
+ * @param {Dependency[]} dependencies dependencies
1435
+ * @param {ChunkGraph} chunkGraph chunk graph
1436
+ * @param {RuntimeTemplate} runtimeTemplate runtime template
1437
+ * @returns {string} glob sync source
1438
+ */
1439
+ getGlobSyncSource(dependencies, chunkGraph, runtimeTemplate) {
1440
+ if (!dependencies || dependencies.length === 0) {
1441
+ return this.getEmptyObjectExportSource();
1442
+ }
1443
+ const moduleGraph = chunkGraph.moduleGraph;
1444
+ const fakeMap = this.getFakeMap(dependencies, chunkGraph);
1445
+ const returnModuleObject = this.getReturnModuleObjectSource(fakeMap);
1446
+ const globImportAccess = this.getImportPropertyAccess();
1447
+ const sortedDependencies =
1448
+ /** @type {import("./dependencies/ContextElementDependency")[]} */
1449
+ (dependencies).sort((a, b) =>
1450
+ a.userRequest < b.userRequest
1451
+ ? -1
1452
+ : a.userRequest > b.userRequest
1453
+ ? 1
1454
+ : 0
1455
+ );
1456
+ /** @type {string[]} */
1457
+ const entries = [];
1458
+ let index = 0;
1459
+ for (const dep of sortedDependencies) {
1460
+ const module = moduleGraph.getModule(dep);
1461
+ let moduleExpr;
1462
+ if (module) {
1463
+ const moduleId = chunkGraph.getModuleId(module);
1464
+ moduleExpr = `(function() { var id = ${JSON.stringify(moduleId)}; return ${returnModuleObject}; })()`;
1465
+ if (globImportAccess) {
1466
+ moduleExpr += globImportAccess;
1467
+ }
1468
+ } else {
1469
+ moduleExpr = `undefined /* ${JSON.stringify(dep.userRequest)} */`;
1470
+ }
1471
+ this.appendGlobMapEntry(index++, dep.userRequest, moduleExpr, entries);
1472
+ }
1473
+ const fakeMapInit = this.getFakeMapInitStatement(fakeMap, runtimeTemplate);
1474
+ return `${fakeMapInit}\n${this.getGlobObjectExportSource(entries.join(","))}`;
1475
+ }
1476
+
1236
1477
  /**
1237
1478
  * @param {string} asyncMode module mode
1238
1479
  * @param {ImportPhaseType} phase import phase
1239
1480
  * @param {CodeGenerationContext} context context info
1240
1481
  * @returns {string} the source code
1241
1482
  */
1242
- getSourceString(asyncMode, phase, { runtimeTemplate, chunkGraph }) {
1483
+ getGlobSourceString(asyncMode, phase, context) {
1484
+ if (asyncMode === "lazy") {
1485
+ if (this.blocks && this.blocks.length > 0) {
1486
+ return this.getGlobLazySource(this.blocks, phase, context);
1487
+ }
1488
+ return this.getEmptyObjectExportSource();
1489
+ }
1490
+ if (this.dependencies && this.dependencies.length > 0) {
1491
+ return this.getGlobSyncSource(
1492
+ this.dependencies,
1493
+ context.chunkGraph,
1494
+ context.runtimeTemplate
1495
+ );
1496
+ }
1497
+ return this.getEmptyObjectExportSource();
1498
+ }
1499
+
1500
+ /**
1501
+ * @param {string} asyncMode module mode
1502
+ * @param {ImportPhaseType} phase import phase
1503
+ * @param {CodeGenerationContext & { runtimeRequirements?: RuntimeRequirements }} context context info
1504
+ * @returns {string} the source code
1505
+ */
1506
+ getSourceString(asyncMode, phase, context) {
1507
+ if (this.options.patterns) {
1508
+ return this.getGlobSourceString(asyncMode, phase, context);
1509
+ }
1510
+ return this.getContextSourceString(asyncMode, phase, context);
1511
+ }
1512
+
1513
+ /**
1514
+ * @param {string} asyncMode module mode
1515
+ * @param {ImportPhaseType} phase import phase
1516
+ * @param {CodeGenerationContext & { runtimeRequirements?: RuntimeRequirements }} context context info
1517
+ * @returns {string} the source code
1518
+ */
1519
+ getContextSourceString(asyncMode, phase, context) {
1520
+ const { runtimeTemplate, chunkGraph } = context;
1243
1521
  const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(this));
1244
1522
  if (asyncMode === "lazy") {
1245
1523
  if (this.blocks && this.blocks.length > 0) {
@@ -1283,10 +1561,20 @@ module.exports = webpackEmptyAsyncContext;`;
1283
1561
  this.dependencies &&
1284
1562
  this.dependencies.length > 0
1285
1563
  ) {
1286
- return this.getWeakSyncSource(this.dependencies, id, chunkGraph);
1564
+ return this.getWeakSyncSource(
1565
+ this.dependencies,
1566
+ id,
1567
+ chunkGraph,
1568
+ runtimeTemplate
1569
+ );
1287
1570
  }
1288
1571
  if (this.dependencies && this.dependencies.length > 0) {
1289
- return this.getSyncSource(this.dependencies, id, chunkGraph);
1572
+ return this.getSyncSource(
1573
+ this.dependencies,
1574
+ id,
1575
+ chunkGraph,
1576
+ runtimeTemplate
1577
+ );
1290
1578
  }
1291
1579
  return this.getSourceForEmptyContext(id, runtimeTemplate);
1292
1580
  }
@@ -1311,12 +1599,15 @@ module.exports = webpackEmptyAsyncContext;`;
1311
1599
  }
1312
1600
 
1313
1601
  /**
1602
+ * Generates code and runtime requirements for this module.
1314
1603
  * @param {CodeGenerationContext} context context for code generation
1315
1604
  * @returns {CodeGenerationResult} result
1316
1605
  */
1317
1606
  codeGeneration(context) {
1318
1607
  const { chunkGraph, compilation } = context;
1319
1608
 
1609
+ /** @type {RuntimeRequirements} */
1610
+ const set = new Set();
1320
1611
  /** @type {Sources} */
1321
1612
  const sources = new Map();
1322
1613
  sources.set(
@@ -1325,13 +1616,11 @@ module.exports = webpackEmptyAsyncContext;`;
1325
1616
  this.getSourceString(
1326
1617
  this.options.mode,
1327
1618
  this.options.phase || ImportPhase.Evaluation,
1328
- context
1619
+ { ...context, runtimeRequirements: set }
1329
1620
  ),
1330
1621
  compilation
1331
1622
  )
1332
1623
  );
1333
- /** @type {RuntimeRequirements} */
1334
- const set = new Set();
1335
1624
  const allDeps =
1336
1625
  this.dependencies.length > 0
1337
1626
  ? /** @type {ContextElementDependency[]} */ [...this.dependencies]
@@ -1370,6 +1659,7 @@ module.exports = webpackEmptyAsyncContext;`;
1370
1659
  }
1371
1660
 
1372
1661
  /**
1662
+ * Returns the estimated size for the requested source type.
1373
1663
  * @param {string=} type the source type for which the size should be estimated
1374
1664
  * @returns {number} the estimated size of the module (must be non-zero)
1375
1665
  */
@@ -1386,23 +1676,23 @@ module.exports = webpackEmptyAsyncContext;`;
1386
1676
  }
1387
1677
 
1388
1678
  /**
1679
+ * Serializes this instance into the provided serializer context.
1389
1680
  * @param {ObjectSerializerContext} context context
1390
1681
  */
1391
1682
  serialize(context) {
1392
- const { write } = context;
1393
- write(this._identifier);
1394
- write(this._forceBuild);
1683
+ context.write(this._identifier).write(this._forceBuild);
1395
1684
  super.serialize(context);
1396
1685
  }
1397
1686
 
1398
1687
  /**
1688
+ * Restores this instance from the provided deserializer context.
1399
1689
  * @param {ObjectDeserializerContext} context context
1400
1690
  */
1401
1691
  deserialize(context) {
1402
- const { read } = context;
1403
- this._identifier = read();
1404
- this._forceBuild = read();
1405
- super.deserialize(context);
1692
+ this._identifier = context.read();
1693
+ const c1 = context.rest;
1694
+ this._forceBuild = c1.read();
1695
+ super.deserialize(c1.rest);
1406
1696
  }
1407
1697
  }
1408
1698