@depup/webpack 5.109.2-depup.0 → 5.110.3-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 (647) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +46 -35
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +107 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +91 -26
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +111 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +40 -49
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +152 -103
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +12 -6
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5334 -0
  160. package/lib/css/syntax.js +9647 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +170 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +49 -31
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +73 -49
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +50 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -7,6 +7,10 @@
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
9
  const HotUpdateChunk = require("../HotUpdateChunk");
10
+ const {
11
+ ASSET_URL_TYPE,
12
+ JAVASCRIPT_TYPE
13
+ } = require("../ModuleSourceTypeConstants");
10
14
  const {
11
15
  ASSET_MODULE_TYPE,
12
16
  ASSET_MODULE_TYPE_BYTES,
@@ -18,20 +22,31 @@ const {
18
22
  const { compareModulesByFullName } = require("../util/comparators");
19
23
  const createHash = require("../util/createHash");
20
24
  const { getUndoPath } = require("../util/identifier");
21
- const memoize = require("../util/memoize");
25
+ const lazyModule = require("../util/lazyModule");
26
+ const preloadModuleType = require("../util/preloadModuleType");
22
27
  const { PUBLIC_PATH_AUTO } = require("../util/publicPathPlaceholder");
23
28
 
24
- /** @typedef {import("webpack-sources").Source} Source */
25
- /** @typedef {import("schema-utils").Schema} Schema */
26
- /** @typedef {import("../../declarations/WebpackOptions").AssetGeneratorDataUrl} AssetGeneratorDataUrl */
27
- /** @typedef {import("../../declarations/WebpackOptions").AssetModuleOutputPath} AssetModuleOutputPath */
28
- /** @typedef {import("../../declarations/WebpackOptions").RawPublicPath} RawPublicPath */
29
- /** @typedef {import("../../declarations/WebpackOptions").AssetModuleFilename} AssetModuleFilename */
30
- /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
31
- /** @typedef {import("../Compiler")} Compiler */
32
- /** @typedef {import("./AssetModule").AssetModuleBuildInfo} AssetModuleBuildInfo */
33
- /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
34
- /** @typedef {import("../NormalModule")} NormalModule */
29
+ /** @import { Source } from "webpack-sources" */
30
+ /** @import { Schema } from "schema-utils" */
31
+ /**
32
+ * @import {
33
+ * AssetGeneratorDataUrl,
34
+ * AssetModuleOutputPath,
35
+ * RawPublicPath,
36
+ * AssetModuleFilename
37
+ * } from "../../declarations/WebpackOptions"
38
+ */
39
+ /**
40
+ * @import {
41
+ * AssetInfo,
42
+ * ExecuteModuleObject,
43
+ * WebpackRequire
44
+ * } from "../Compilation"
45
+ */
46
+ /** @import Compiler from "../Compiler" */
47
+ /** @import { AssetModuleBuildInfo } from "./AssetModule" */
48
+ /** @import { CodeGenerationResult } from "../Module" */
49
+ /** @import NormalModule from "../NormalModule" */
35
50
 
36
51
  /**
37
52
  * Returns definition.
@@ -54,17 +69,19 @@ const generatorValidationOptions = {
54
69
  baseDataPath: "generator"
55
70
  };
56
71
 
57
- const getAssetGenerator = memoize(() => require("./AssetGenerator"));
58
- const getAssetParser = memoize(() => require("./AssetParser"));
59
- const getAssetSourceParser = memoize(() => require("./AssetSourceParser"));
60
- const getAssetBytesParser = memoize(() => require("./AssetBytesParser"));
61
- const getAssetSourceGenerator = memoize(() =>
72
+ const getAssetGenerator = lazyModule(() => require("./AssetGenerator"));
73
+ const getAssetParser = lazyModule(() => require("./AssetParser"));
74
+ const getAssetSourceParser = lazyModule(() => require("./AssetSourceParser"));
75
+ const getAssetBytesParser = lazyModule(() => require("./AssetBytesParser"));
76
+ const getAssetSourceGenerator = lazyModule(() =>
62
77
  require("./AssetSourceGenerator")
63
78
  );
64
- const getAssetBytesGenerator = memoize(() => require("./AssetBytesGenerator"));
65
- const getAssetModule = memoize(() => require("./AssetModule"));
66
- const getWebManifestParser = memoize(() => require("./WebManifestParser"));
67
- const getWebManifestGenerator = memoize(() =>
79
+ const getAssetBytesGenerator = lazyModule(() =>
80
+ require("./AssetBytesGenerator")
81
+ );
82
+ const getAssetModule = lazyModule(() => require("./AssetModule"));
83
+ const getWebManifestParser = lazyModule(() => require("./WebManifestParser"));
84
+ const getWebManifestGenerator = lazyModule(() =>
68
85
  require("./WebManifestGenerator")
69
86
  );
70
87
 
@@ -98,7 +115,33 @@ class AssetModulesPlugin {
98
115
  compiler.hooks.compilation.tap(
99
116
  PLUGIN_NAME,
100
117
  (compilation, { normalModuleFactory }) => {
101
- const AssetModule = getAssetModule();
118
+ preloadModuleType(normalModuleFactory, PLUGIN_NAME, [
119
+ [
120
+ ASSET_MODULE_TYPE,
121
+ [getAssetModule, getAssetParser, getAssetGenerator]
122
+ ],
123
+ [
124
+ ASSET_MODULE_TYPE_INLINE,
125
+ [getAssetModule, getAssetParser, getAssetGenerator]
126
+ ],
127
+ [
128
+ ASSET_MODULE_TYPE_RESOURCE,
129
+ [getAssetModule, getAssetParser, getAssetGenerator]
130
+ ],
131
+ [
132
+ ASSET_MODULE_TYPE_SOURCE,
133
+ [getAssetModule, getAssetSourceParser, getAssetSourceGenerator]
134
+ ],
135
+ [
136
+ ASSET_MODULE_TYPE_BYTES,
137
+ [getAssetModule, getAssetBytesParser, getAssetBytesGenerator]
138
+ ],
139
+ [
140
+ ASSET_MODULE_TYPE_WEBMANIFEST,
141
+ [getWebManifestParser, getWebManifestGenerator]
142
+ ]
143
+ ]);
144
+
102
145
  for (const type of [
103
146
  ASSET_MODULE_TYPE,
104
147
  ASSET_MODULE_TYPE_BYTES,
@@ -108,11 +151,11 @@ class AssetModulesPlugin {
108
151
  ]) {
109
152
  normalModuleFactory.hooks.createModuleClass
110
153
  .for(type)
111
- .tap(
112
- PLUGIN_NAME,
113
- (createData, _resolveData) =>
114
- new AssetModule(createData, this.options.sideEffectFree)
115
- );
154
+ .tap(PLUGIN_NAME, (createData, _resolveData) => {
155
+ const AssetModule = getAssetModule.loaded();
156
+
157
+ return new AssetModule(createData, this.options.sideEffectFree);
158
+ });
116
159
  }
117
160
 
118
161
  normalModuleFactory.hooks.createParser
@@ -139,35 +182,35 @@ class AssetModulesPlugin {
139
182
  };
140
183
  }
141
184
 
142
- const AssetParser = getAssetParser();
185
+ const AssetParser = getAssetParser.loaded();
143
186
 
144
187
  return new AssetParser(dataUrlCondition);
145
188
  });
146
189
  normalModuleFactory.hooks.createParser
147
190
  .for(ASSET_MODULE_TYPE_INLINE)
148
191
  .tap(PLUGIN_NAME, (_parserOptions) => {
149
- const AssetParser = getAssetParser();
192
+ const AssetParser = getAssetParser.loaded();
150
193
 
151
194
  return new AssetParser(true);
152
195
  });
153
196
  normalModuleFactory.hooks.createParser
154
197
  .for(ASSET_MODULE_TYPE_RESOURCE)
155
198
  .tap(PLUGIN_NAME, (_parserOptions) => {
156
- const AssetParser = getAssetParser();
199
+ const AssetParser = getAssetParser.loaded();
157
200
 
158
201
  return new AssetParser(false);
159
202
  });
160
203
  normalModuleFactory.hooks.createParser
161
204
  .for(ASSET_MODULE_TYPE_SOURCE)
162
205
  .tap(PLUGIN_NAME, (_parserOptions) => {
163
- const AssetSourceParser = getAssetSourceParser();
206
+ const AssetSourceParser = getAssetSourceParser.loaded();
164
207
 
165
208
  return new AssetSourceParser();
166
209
  });
167
210
  normalModuleFactory.hooks.createParser
168
211
  .for(ASSET_MODULE_TYPE_BYTES)
169
212
  .tap(PLUGIN_NAME, (_parserOptions) => {
170
- const AssetBytesParser = getAssetBytesParser();
213
+ const AssetBytesParser = getAssetBytesParser.loaded();
171
214
 
172
215
  return new AssetBytesParser();
173
216
  });
@@ -244,7 +287,7 @@ class AssetModulesPlugin {
244
287
  outputPath = generatorOptions.outputPath;
245
288
  }
246
289
 
247
- const AssetGenerator = getAssetGenerator();
290
+ const AssetGenerator = getAssetGenerator.loaded();
248
291
 
249
292
  return new AssetGenerator(
250
293
  compilation.moduleGraph,
@@ -260,7 +303,7 @@ class AssetModulesPlugin {
260
303
  normalModuleFactory.hooks.createGenerator
261
304
  .for(ASSET_MODULE_TYPE_SOURCE)
262
305
  .tap(PLUGIN_NAME, () => {
263
- const AssetSourceGenerator = getAssetSourceGenerator();
306
+ const AssetSourceGenerator = getAssetSourceGenerator.loaded();
264
307
 
265
308
  return new AssetSourceGenerator(compilation.moduleGraph);
266
309
  });
@@ -268,7 +311,7 @@ class AssetModulesPlugin {
268
311
  normalModuleFactory.hooks.createGenerator
269
312
  .for(ASSET_MODULE_TYPE_BYTES)
270
313
  .tap(PLUGIN_NAME, () => {
271
- const AssetBytesGenerator = getAssetBytesGenerator();
314
+ const AssetBytesGenerator = getAssetBytesGenerator.loaded();
272
315
 
273
316
  return new AssetBytesGenerator(compilation.moduleGraph);
274
317
  });
@@ -306,7 +349,7 @@ class AssetModulesPlugin {
306
349
 
307
350
  if (errored) {
308
351
  const erroredModule = /** @type {NormalModule} */ (module);
309
- const AssetGenerator = getAssetGenerator();
352
+ const AssetGenerator = getAssetGenerator.loaded();
310
353
  const [fullContentHash, contentHash] =
311
354
  AssetGenerator.getFullContentHash(
312
355
  erroredModule,
@@ -373,14 +416,14 @@ class AssetModulesPlugin {
373
416
  normalModuleFactory.hooks.createParser
374
417
  .for(ASSET_MODULE_TYPE_WEBMANIFEST)
375
418
  .tap(PLUGIN_NAME, () => {
376
- const WebManifestParser = getWebManifestParser();
419
+ const WebManifestParser = getWebManifestParser.loaded();
377
420
 
378
421
  return new WebManifestParser();
379
422
  });
380
423
  normalModuleFactory.hooks.createGenerator
381
424
  .for(ASSET_MODULE_TYPE_WEBMANIFEST)
382
425
  .tap(PLUGIN_NAME, () => {
383
- const WebManifestGenerator = getWebManifestGenerator();
426
+ const WebManifestGenerator = getWebManifestGenerator.loaded();
384
427
 
385
428
  return new WebManifestGenerator(compilation.moduleGraph);
386
429
  });
@@ -462,6 +505,35 @@ class AssetModulesPlugin {
462
505
  );
463
506
  }
464
507
  );
508
+
509
+ compilation.hooks.executeModule.tap(PLUGIN_NAME, (options, context) => {
510
+ const { codeGenerationResult } = options;
511
+ // A wrapper-less asset (`asset-url` only) would yield `{}` when
512
+ // required at build time — emulate the wrapper's exports instead.
513
+ if (!options.module.type.startsWith(ASSET_MODULE_TYPE)) return;
514
+ if (codeGenerationResult.sources.has(JAVASCRIPT_TYPE)) return;
515
+ const data = codeGenerationResult.data;
516
+ if (!data) return;
517
+ const moduleObject =
518
+ /** @type {ExecuteModuleObject} */
519
+ (options.moduleObject);
520
+ // `__webpack_require__.p` honors the `importModule` publicPath
521
+ // override (`URLDependency` requests it for wrapper-less assets).
522
+ const publicPath =
523
+ /** @type {WebpackRequire} */
524
+ (context.__webpack_require__).p;
525
+ const filename = data.get("filename");
526
+ if (typeof filename === "string" && typeof publicPath === "string") {
527
+ moduleObject.exports = publicPath + filename;
528
+ return;
529
+ }
530
+ // data: uris (and assets without a runtime publicPath) resolve
531
+ // chunk-independently — use the baked `asset-url`.
532
+ const url = data.get("url");
533
+ if (url && typeof url[ASSET_URL_TYPE] === "string") {
534
+ moduleObject.exports = url[ASSET_URL_TYPE];
535
+ }
536
+ });
465
537
  }
466
538
  );
467
539
  }
@@ -7,13 +7,15 @@
7
7
 
8
8
  const Parser = require("../Parser");
9
9
 
10
- /** @typedef {import("../../declarations/WebpackOptions").AssetParserDataUrlOptions} AssetParserDataUrlOptions */
11
- /** @typedef {import("../../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
12
- /** @typedef {import("../Module")} Module */
13
- /** @typedef {import("./AssetModule").AssetModuleBuildInfo} AssetModuleBuildInfo */
14
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
15
- /** @typedef {import("../Parser").ParserState} ParserState */
16
- /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
10
+ /**
11
+ * @import {
12
+ * AssetParserDataUrlOptions,
13
+ * AssetParserOptions
14
+ * } from "../../declarations/WebpackOptions"
15
+ */
16
+ /** @import Module, { BuildMeta } from "../Module" */
17
+ /** @import { AssetModuleBuildInfo } from "./AssetModule" */
18
+ /** @import { ParserState, PreparsedAst } from "../Parser" */
17
19
 
18
20
  /** @typedef {((source: string | Buffer, context: { filename: string, module: Module }) => boolean)} AssetParserDataUrlFunction */
19
21
 
@@ -19,14 +19,20 @@ const {
19
19
  NO_TYPES
20
20
  } = require("../ModuleSourceTypeConstants");
21
21
  const RuntimeGlobals = require("../RuntimeGlobals");
22
-
23
- /** @typedef {import("webpack-sources").Source} Source */
24
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
25
- /** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
26
- /** @typedef {import("../Module").SourceType} SourceType */
27
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
28
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
29
- /** @typedef {import("../NormalModule")} NormalModule */
22
+ const { languageOfFilename } = require("../util/dataURL");
23
+
24
+ /** @import { Source } from "webpack-sources" */
25
+ /** @import { GenerateContext, UpdateHashContext } from "../Generator" */
26
+ /** @import Hash from "../util/Hash" */
27
+ /**
28
+ * @import {
29
+ * ConcatenationBailoutReasonContext,
30
+ * SourceType,
31
+ * SourceTypes
32
+ * } from "../Module"
33
+ */
34
+ /** @import ModuleGraph from "../ModuleGraph" */
35
+ /** @import NormalModule from "../NormalModule" */
30
36
 
31
37
  class AssetSourceGenerator extends Generator {
32
38
  /**
@@ -60,8 +66,11 @@ class AssetSourceGenerator extends Generator {
60
66
  }
61
67
 
62
68
  const content = originalSource.source();
63
- const encodedSource =
64
- typeof content === "string" ? content : content.toString("utf8");
69
+ const encodedSource = AssetSourceGenerator._renderEmbedded(
70
+ module,
71
+ typeof content === "string" ? content : content.toString("utf8"),
72
+ runtimeTemplate
73
+ );
65
74
 
66
75
  /** @type {string} */
67
76
  let sourceContent;
@@ -99,6 +108,46 @@ class AssetSourceGenerator extends Generator {
99
108
  }
100
109
  }
101
110
 
111
+ /**
112
+ * Offer the file's text to `renderEmbeddedSource` before it is embedded in
113
+ * JavaScript. Declines a file whose name names no language webpack knows.
114
+ * @param {NormalModule} module the module holding the text
115
+ * @param {string} text the file's text
116
+ * @param {GenerateContext["runtimeTemplate"]} runtimeTemplate runtime template
117
+ * @returns {string} the rendered text, or `text` when nothing rendered it
118
+ */
119
+ static _renderEmbedded(module, text, runtimeTemplate) {
120
+ if (!runtimeTemplate) return text;
121
+ // Untapped, nothing can change: no mime lookup and no source to wrap.
122
+ const { compilation } = runtimeTemplate;
123
+ if (compilation.hooks.renderEmbeddedSource.taps.length === 0) return text;
124
+ const type = languageOfFilename(module.nameForCondition());
125
+ if (type === undefined) return text;
126
+ const rendered = compilation._resolveEmbeddedSource(new RawSource(text), {
127
+ type,
128
+ hostType: JAVASCRIPT_TYPE,
129
+ module
130
+ });
131
+ return /** @type {string} */ (rendered.source());
132
+ }
133
+
134
+ /**
135
+ * Updates the hash with the data contributed by this instance.
136
+ * @param {Hash} hash hash that will be modified
137
+ * @param {UpdateHashContext} updateHashContext context for updating hash
138
+ */
139
+ updateHash(hash, updateHashContext) {
140
+ const { module, runtimeTemplate } = updateHashContext;
141
+ // What a tap varies on has to reach the key, or a changed option replays.
142
+ if (
143
+ runtimeTemplate &&
144
+ runtimeTemplate.compilation.hooks.renderEmbeddedSource.taps.length > 0 &&
145
+ languageOfFilename(module.nameForCondition())
146
+ ) {
147
+ runtimeTemplate.compilation.hooks.embeddedSourceHash.call(module, hash);
148
+ }
149
+ }
150
+
102
151
  /**
103
152
  * Generates fallback output for the provided error condition.
104
153
  * @param {Error} error the error
@@ -109,9 +158,7 @@ class AssetSourceGenerator extends Generator {
109
158
  generateError(error, module, generateContext) {
110
159
  switch (generateContext.type) {
111
160
  case JAVASCRIPT_TYPE: {
112
- return new RawSource(
113
- `throw new Error(${JSON.stringify(error.message)});`
114
- );
161
+ return new RawSource(Generator.throwBuildErrorCode(error));
115
162
  }
116
163
  default:
117
164
  return null;
@@ -7,10 +7,8 @@
7
7
 
8
8
  const Parser = require("../Parser");
9
9
 
10
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
11
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
12
- /** @typedef {import("../Parser").ParserState} ParserState */
13
- /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
10
+ /** @import { BuildInfo, BuildMeta } from "../Module" */
11
+ /** @import { ParserState, PreparsedAst } from "../Parser" */
14
12
 
15
13
  class AssetSourceParser extends Parser {
16
14
  /**
@@ -15,24 +15,32 @@ const { ASSET_MODULE_TYPE_RAW_DATA_URL } = require("../ModuleTypeConstants");
15
15
  const RuntimeGlobals = require("../RuntimeGlobals");
16
16
  const makeSerializable = require("../util/makeSerializable");
17
17
 
18
- /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
19
- /** @typedef {import("../Compilation")} Compilation */
20
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
21
- /** @typedef {import("../Module").BuildCallback} BuildCallback */
22
- /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
23
- /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
24
- /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
25
- /** @typedef {import("../Module").CodeGenerationResultData} CodeGenerationResultData */
26
- /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
27
- /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
28
- /** @typedef {import("../Module").Sources} Sources */
29
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
30
- /** @typedef {import("../RequestShortener")} RequestShortener */
31
- /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
18
+ /**
19
+ * @import {
20
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
21
+ * } from "../config/defaults"
22
+ */
23
+ /** @import Compilation from "../Compilation" */
24
+ /** @import { UpdateHashContext } from "../Dependency" */
25
+ /**
26
+ * @import {
27
+ * BuildCallback,
28
+ * RuntimeRequirements,
29
+ * CodeGenerationContext,
30
+ * CodeGenerationResult,
31
+ * CodeGenerationResultData,
32
+ * NeedBuildCallback,
33
+ * NeedBuildContext,
34
+ * Sources,
35
+ * SourceTypes
36
+ * } from "../Module"
37
+ */
38
+ /** @import RequestShortener from "../RequestShortener" */
39
+ /** @import { ResolverWithOptions } from "../ResolverFactory" */
32
40
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Buffer | undefined, string, string]>} ObjectDeserializerContext */
33
41
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Buffer | undefined, string, string]>} ObjectSerializerContext */
34
- /** @typedef {import("../util/Hash")} Hash */
35
- /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
42
+ /** @import Hash from "../util/Hash" */
43
+ /** @import { InputFileSystem } from "../util/fs" */
36
44
 
37
45
  class RawDataUrlModule extends Module {
38
46
  /**
@@ -12,16 +12,14 @@ const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
12
12
  const { PUBLIC_PATH_AUTO } = require("../util/publicPathPlaceholder");
13
13
  const AssetGenerator = require("./AssetGenerator");
14
14
 
15
- /** @typedef {import("webpack-sources").Source} Source */
16
- /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
17
- /** @typedef {import("../Compilation").DependencyConstructor} DependencyConstructor */
18
- /** @typedef {import("../Dependency")} Dependency */
19
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
20
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
21
- /** @typedef {import("../Module").SourceType} SourceType */
22
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
23
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
24
- /** @typedef {import("../NormalModule")} NormalModule */
15
+ /** @import { Source } from "webpack-sources" */
16
+ /** @import CodeGenerationResults from "../CodeGenerationResults" */
17
+ /** @import { DependencyConstructor } from "../Compilation" */
18
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
19
+ /** @import { GenerateContext } from "../Generator" */
20
+ /** @import { SourceType, SourceTypes } from "../Module" */
21
+ /** @import ModuleGraph from "../ModuleGraph" */
22
+ /** @import NormalModule from "../NormalModule" */
25
23
 
26
24
  const WEBMANIFEST_TYPE = "webmanifest";
27
25
  const WEBMANIFEST_TYPES = new Set([WEBMANIFEST_TYPE]);
@@ -9,13 +9,9 @@ const { parse } = require("acorn");
9
9
  const Parser = require("../Parser");
10
10
  const HtmlSourceDependency = require("../dependencies/HtmlSourceDependency");
11
11
 
12
- /** @typedef {import("estree").Expression} Expression */
13
- /** @typedef {import("estree").ObjectExpression} ObjectExpression */
14
- /** @typedef {import("estree").Program} Program */
15
- /** @typedef {import("estree").Property} Property */
16
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
17
- /** @typedef {import("../Parser").ParserState} ParserState */
18
- /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
12
+ /** @import { Expression, ObjectExpression, Program, Property } from "estree" */
13
+ /** @import { BuildInfo } from "../Module" */
14
+ /** @import { ParserState, PreparsedAst } from "../Parser" */
19
15
 
20
16
  // acorn decorates every node with numeric source offsets (absent from the estree types).
21
17
  /** @typedef {{ start: number, end: number }} Positioned */
@@ -26,6 +22,7 @@ const ABSOLUTE_URL_SCHEME_REGEXP = /^[a-zA-Z][a-zA-Z\d+\-.]*:/;
26
22
  // Manifest members whose array items carry an asset `src` (`icons[].src`,
27
23
  // `screenshots[].src`, and `shortcuts[].icons[].src` — the last nests under `icons`).
28
24
  const ICON_CONTAINER_KEYS = new Set(["icons", "screenshots"]);
25
+ const BOM_BYTE_LENGTH = 3;
29
26
 
30
27
  /**
31
28
  * Parses a Web App Manifest (`.webmanifest`) so its icon/screenshot `src`
@@ -41,14 +38,28 @@ class WebManifestParser extends Parser {
41
38
  * @returns {ParserState} the parser state
42
39
  */
43
40
  parse(source, state) {
44
- if (Buffer.isBuffer(source)) {
45
- source = source.toString("utf8");
41
+ // The generator replaces over the raw buffer, so the emitted ranges are
42
+ // byte offsets rather than the UTF-16 ones acorn reports.
43
+ const binary = Buffer.isBuffer(source);
44
+ if (binary) {
45
+ source = /** @type {Buffer} */ (source).toString("utf8");
46
46
  } else if (typeof source === "object") {
47
47
  throw new Error("webpackAst is unexpected for the WebManifestParser");
48
48
  }
49
+ let leadingBytes = 0;
49
50
  if (source[0] === "") {
50
51
  source = source.slice(1);
52
+ leadingBytes = binary ? BOM_BYTE_LENGTH : 1;
51
53
  }
54
+ const text = /** @type {string} */ (source);
55
+ const asciiOnly = !binary || Buffer.byteLength(text) === text.length;
56
+ /**
57
+ * @param {number} offset offset in UTF-16 code units into `text`
58
+ * @returns {number} matching offset into the module source
59
+ */
60
+ const toSourceOffset = (offset) =>
61
+ (asciiOnly ? offset : Buffer.byteLength(text.slice(0, offset))) +
62
+ leadingBytes;
52
63
 
53
64
  const module = state.module;
54
65
  // Without `buildHttp` there is no handler to fetch remote icons, so an
@@ -111,7 +122,10 @@ class WebManifestParser extends Parser {
111
122
  const { start, end } = /** @type {Positioned} */ (
112
123
  /** @type {unknown} */ (value)
113
124
  );
114
- const dep = new HtmlSourceDependency(url, [start, end - 2]);
125
+ const dep = new HtmlSourceDependency(url, [
126
+ toSourceOffset(start),
127
+ toSourceOffset(end - 2)
128
+ ]);
115
129
  module.addDependency(dep);
116
130
  module.addCodeGenerationDependency(dep);
117
131
  }
@@ -7,8 +7,8 @@
7
7
 
8
8
  const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
9
9
 
10
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
11
- /** @typedef {import("../Module")} Module */
10
+ /** @import ModuleGraph from "../ModuleGraph" */
11
+ /** @import Module from "../Module" */
12
12
 
13
13
  /** @typedef {Set<Module>} Modules */
14
14
 
@@ -32,16 +32,22 @@ const getOutgoingAsyncModules = (moduleGraph, module) => {
32
32
  const outgoingConnectionMap =
33
33
  moduleGraph.getOutgoingConnectionsByModule(module);
34
34
  if (outgoingConnectionMap) {
35
- for (const [module, connections] of outgoingConnectionMap) {
35
+ // Walk the imports in source order: the spec gathers these from
36
+ // `[[RequestedModules]]`, and their evaluation order is observable.
37
+ for (const dependency of module.dependencies) {
38
+ if (!(dependency instanceof HarmonyImportDependency)) continue;
39
+ const referenced = moduleGraph.getModule(dependency);
40
+ if (!referenced || seen.has(referenced)) continue;
41
+ const connections = outgoingConnectionMap.get(referenced);
36
42
  if (
43
+ connections &&
37
44
  connections.some(
38
45
  (c) =>
39
46
  c.dependency instanceof HarmonyImportDependency &&
40
47
  c.isTargetActive(undefined)
41
- ) &&
42
- module
48
+ )
43
49
  ) {
44
- g(module);
50
+ g(referenced);
45
51
  }
46
52
  }
47
53
  }
@@ -9,8 +9,8 @@ const InitFragment = require("../InitFragment");
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const Template = require("../Template");
11
11
 
12
- /** @typedef {import("webpack-sources").Source} Source */
13
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
12
+ /** @import { Source } from "webpack-sources" */
13
+ /** @import { GenerateContext } from "../Generator" */
14
14
 
15
15
  /** @typedef {Map<string, string>} Dependencies */
16
16
 
@@ -7,8 +7,8 @@
7
7
 
8
8
  const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
9
9
 
10
- /** @typedef {import("../Compiler")} Compiler */
11
- /** @typedef {import("../Module")} Module */
10
+ /** @import Compiler from "../Compiler" */
11
+ /** @import Module from "../Module" */
12
12
 
13
13
  const PLUGIN_NAME = "InferAsyncModulesPlugin";
14
14
 
@@ -4,14 +4,14 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("../Module")} Module */
8
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
9
- /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
7
+ /** @import Module from "../Module" */
8
+ /** @import ModuleGraph from "../ModuleGraph" */
9
+ /** @import RuntimeTemplate from "../RuntimeTemplate" */
10
10
 
11
11
  /**
12
12
  * Whether an async module is lowered to a generator: the target has no
13
13
  * `async`/`await` but supports generators, and the module contains no
14
- * top-level `for await…of` (which generators can't express).
14
+ * top-level `for await…of` or `await using` (which generators can't express).
15
15
  * @param {Module} module module
16
16
  * @param {ModuleGraph} moduleGraph module graph
17
17
  * @param {RuntimeTemplate} runtimeTemplate runtime template