@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -10,19 +10,22 @@ const NullDependency = require("./NullDependency");
10
10
 
11
11
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
12
12
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
13
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
-
16
13
  /** @typedef {string[] | true} Exports */
17
14
 
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Exports, boolean]>} ObjectDeserializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Exports, boolean]>} ObjectSerializerContext */
17
+
18
18
  class StaticExportsDependency extends NullDependency {
19
19
  /**
20
+ * Creates an instance of StaticExportsDependency.
20
21
  * @param {Exports} exports export names
21
22
  * @param {boolean} canMangle true, if mangling exports names is allowed
22
23
  */
23
24
  constructor(exports, canMangle) {
24
25
  super();
26
+ /** @type {Exports} */
25
27
  this.exports = exports;
28
+ /** @type {boolean} */
26
29
  this.canMangle = canMangle;
27
30
  }
28
31
 
@@ -44,23 +47,23 @@ class StaticExportsDependency extends NullDependency {
44
47
  }
45
48
 
46
49
  /**
50
+ * Serializes this instance into the provided serializer context.
47
51
  * @param {ObjectSerializerContext} context context
48
52
  */
49
53
  serialize(context) {
50
- const { write } = context;
51
- write(this.exports);
52
- write(this.canMangle);
54
+ context.write(this.exports).write(this.canMangle);
53
55
  super.serialize(context);
54
56
  }
55
57
 
56
58
  /**
59
+ * Restores this instance from the provided deserializer context.
57
60
  * @param {ObjectDeserializerContext} context context
58
61
  */
59
62
  deserialize(context) {
60
- const { read } = context;
61
- this.exports = read();
62
- this.canMangle = read();
63
- super.deserialize(context);
63
+ this.exports = context.read();
64
+ const c1 = context.rest;
65
+ this.canMangle = c1.read();
66
+ super.deserialize(c1.rest);
64
67
  }
65
68
  }
66
69
 
@@ -10,7 +10,7 @@ const {
10
10
  JAVASCRIPT_MODULE_TYPE_DYNAMIC
11
11
  } = require("../ModuleTypeConstants");
12
12
  const RuntimeGlobals = require("../RuntimeGlobals");
13
- const WebpackError = require("../WebpackError");
13
+ const WebpackError = require("../errors/WebpackError");
14
14
  const {
15
15
  evaluateToString,
16
16
  expressionIsUnsupported,
@@ -30,7 +30,7 @@ const PLUGIN_NAME = "SystemPlugin";
30
30
 
31
31
  class SystemPlugin {
32
32
  /**
33
- * Apply the plugin
33
+ * Applies the plugin by registering its hooks on the compiler.
34
34
  * @param {Compiler} compiler the compiler instance
35
35
  * @returns {void}
36
36
  */
@@ -51,6 +51,7 @@ class SystemPlugin {
51
51
  });
52
52
 
53
53
  /**
54
+ * Handles the hook callback for this code path.
54
55
  * @param {Parser} parser parser parser
55
56
  * @param {JavascriptParserOptions} parserOptions parserOptions
56
57
  * @returns {void}
@@ -61,6 +62,7 @@ class SystemPlugin {
61
62
  }
62
63
 
63
64
  /**
65
+ * Sets not supported.
64
66
  * @param {string} name name
65
67
  */
66
68
  const setNotSupported = (name) => {
@@ -107,16 +109,14 @@ class SystemPlugin {
107
109
  /** @type {Range} */ (expr.range),
108
110
  [RuntimeGlobals.system]
109
111
  );
110
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
112
+ dep.loc = parser.getLocation(expr);
111
113
  parser.state.module.addPresentationalDependency(dep);
112
114
  return true;
113
115
  });
114
116
 
115
117
  parser.hooks.call.for("System.import").tap(PLUGIN_NAME, (expr) => {
116
118
  parser.state.module.addWarning(
117
- new SystemImportDeprecationWarning(
118
- /** @type {DependencyLocation} */ (expr.loc)
119
- )
119
+ new SystemImportDeprecationWarning(parser.getLocation(expr))
120
120
  );
121
121
 
122
122
  return parser.hooks.importCall.call({
@@ -144,6 +144,7 @@ class SystemPlugin {
144
144
 
145
145
  class SystemImportDeprecationWarning extends WebpackError {
146
146
  /**
147
+ * Creates an instance of SystemImportDeprecationWarning.
147
148
  * @param {DependencyLocation} loc location
148
149
  */
149
150
  constructor(loc) {
@@ -152,8 +153,10 @@ class SystemImportDeprecationWarning extends WebpackError {
152
153
  "For more info visit https://webpack.js.org/guides/code-splitting/"
153
154
  );
154
155
 
156
+ /** @type {string} */
155
157
  this.name = "SystemImportDeprecationWarning";
156
158
 
159
+ /** @type {DependencyLocation} */
157
160
  this.loc = loc;
158
161
  }
159
162
  }
@@ -15,6 +15,7 @@ class SystemRuntimeModule extends RuntimeModule {
15
15
  }
16
16
 
17
17
  /**
18
+ * Generates runtime code for this runtime module.
18
19
  * @returns {string | null} runtime code
19
20
  */
20
21
  generate() {
@@ -0,0 +1,93 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const isGeneratorLowered = require("../async-modules/isGeneratorLowered");
8
+ const makeSerializable = require("../util/makeSerializable");
9
+ const NullDependency = require("./NullDependency");
10
+
11
+ /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
+ /** @typedef {import("../Dependency")} Dependency */
13
+ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
+ /** @typedef {import("../Module")} Module */
15
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
+
19
+ /**
20
+ * Marks a top-level `await` expression so it can be rewritten to `(yield …)`
21
+ * when the module is lowered to a generator (target without `async`/`await`).
22
+ */
23
+ class TopLevelAwaitDependency extends NullDependency {
24
+ /**
25
+ * @param {Range} range range of the whole `await` expression
26
+ * @param {Range} argumentRange range of the awaited argument
27
+ */
28
+ constructor(range, argumentRange) {
29
+ super();
30
+ /** @type {Range} */
31
+ this.range = range;
32
+ /** @type {Range} */
33
+ this.argumentRange = argumentRange;
34
+ }
35
+
36
+ /**
37
+ * Serializes this instance into the provided serializer context.
38
+ * @param {ObjectSerializerContext} context context
39
+ */
40
+ serialize(context) {
41
+ const { write } = context;
42
+ write(this.range);
43
+ write(this.argumentRange);
44
+ super.serialize(context);
45
+ }
46
+
47
+ /**
48
+ * Restores this instance from the provided deserializer context.
49
+ * @param {ObjectDeserializerContext} context context
50
+ */
51
+ deserialize(context) {
52
+ const { read } = context;
53
+ this.range = read();
54
+ this.argumentRange = read();
55
+ super.deserialize(context);
56
+ }
57
+ }
58
+
59
+ makeSerializable(
60
+ TopLevelAwaitDependency,
61
+ "webpack/lib/dependencies/TopLevelAwaitDependency"
62
+ );
63
+
64
+ TopLevelAwaitDependency.Template = class TopLevelAwaitDependencyTemplate extends (
65
+ NullDependency.Template
66
+ ) {
67
+ /**
68
+ * Applies the plugin by registering its hooks on the compiler.
69
+ * @param {Dependency} dependency the dependency for which the template should be applied
70
+ * @param {ReplaceSource} source the current replace source which can be modified
71
+ * @param {DependencyTemplateContext} templateContext the context object
72
+ * @returns {void}
73
+ */
74
+ apply(dependency, source, { module, moduleGraph, runtimeTemplate }) {
75
+ // Only rewrite when the body is a generator (no `async`/`await`, but
76
+ // generators). `await` and `yield` differ in precedence, so wrap the
77
+ // whole expression: `await X` -> `(yield X)`.
78
+ if (
79
+ !isGeneratorLowered(
80
+ /** @type {Module} */ (module),
81
+ moduleGraph,
82
+ runtimeTemplate
83
+ )
84
+ ) {
85
+ return;
86
+ }
87
+ const dep = /** @type {TopLevelAwaitDependency} */ (dependency);
88
+ source.replace(dep.range[0], dep.argumentRange[0] - 1, "(yield ");
89
+ source.insert(dep.argumentRange[1], ")");
90
+ }
91
+ };
92
+
93
+ module.exports = TopLevelAwaitDependency;
@@ -11,13 +11,14 @@ const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTempl
11
11
 
12
12
  /** @typedef {import("../ContextModule").ContextOptions} ContextOptions */
13
13
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
14
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
14
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range]>} ObjectDeserializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range]>} ObjectSerializerContext */
16
16
 
17
17
  /** @typedef {ContextOptions & { request: string }} ContextDependencyOptions */
18
18
 
19
19
  class URLContextDependency extends ContextDependency {
20
20
  /**
21
+ * Creates an instance of URLContextDependency.
21
22
  * @param {ContextDependencyOptions} options options
22
23
  * @param {Range} range range
23
24
  * @param {Range} valueRange value range
@@ -37,21 +38,21 @@ class URLContextDependency extends ContextDependency {
37
38
  }
38
39
 
39
40
  /**
41
+ * Serializes this instance into the provided serializer context.
40
42
  * @param {ObjectSerializerContext} context context
41
43
  */
42
44
  serialize(context) {
43
- const { write } = context;
44
- write(this.valueRange);
45
+ context.write(this.valueRange);
45
46
  super.serialize(context);
46
47
  }
47
48
 
48
49
  /**
50
+ * Restores this instance from the provided deserializer context.
49
51
  * @param {ObjectDeserializerContext} context context
50
52
  */
51
53
  deserialize(context) {
52
- const { read } = context;
53
- this.valueRange = read();
54
- super.deserialize(context);
54
+ this.valueRange = context.read();
55
+ super.deserialize(context.rest);
55
56
  }
56
57
  }
57
58
 
@@ -5,16 +5,23 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const {
9
+ ASSET_URL_TYPE,
10
+ JAVASCRIPT_TYPE
11
+ } = require("../ModuleSourceTypeConstants");
8
12
  const RuntimeGlobals = require("../RuntimeGlobals");
9
13
  const RawDataUrlModule = require("../asset/RawDataUrlModule");
10
14
  const {
11
15
  getDependencyUsedByExportsCondition
12
16
  } = require("../optimize/InnerGraph");
17
+ const { toJsStringLiteral } = require("../util/identifier");
13
18
  const makeSerializable = require("../util/makeSerializable");
14
19
  const memoize = require("../util/memoize");
15
20
  const ModuleDependency = require("./ModuleDependency");
16
21
 
17
22
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
23
+ /** @typedef {import("../ChunkGraph")} ChunkGraph */
24
+ /** @typedef {import("../Compilation")} Compilation */
18
25
  /** @typedef {import("../Dependency")} Dependency */
19
26
  /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
20
27
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
@@ -22,15 +29,74 @@ const ModuleDependency = require("./ModuleDependency");
22
29
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
23
30
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
24
31
  /** @typedef {import("../optimize/InnerGraph").UsedByExports} UsedByExports */
25
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
26
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
32
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, boolean, UsedByExports | undefined, true | undefined, true | undefined, ("high" | "low" | "auto" | undefined), string | undefined, string | undefined, string | undefined]>} ObjectDeserializerContext */
33
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, boolean, UsedByExports | undefined, true | undefined, true | undefined, ("high" | "low" | "auto" | undefined), string | undefined, string | undefined, string | undefined]>} ObjectSerializerContext */
27
34
 
28
35
  const getIgnoredRawDataUrlModule = memoize(
29
36
  () => new RawDataUrlModule("data:,", "ignored-asset", "(ignored asset)")
30
37
  );
31
38
 
39
+ /**
40
+ * Resolves the static literal specifier (already quoted) for `new URL(<here>, import.meta.url)`,
41
+ * or `null` when the asset url can't be determined statically (e.g. a runtime/dynamic publicPath).
42
+ * @param {URLDependency} dep the dependency
43
+ * @param {DependencyTemplateContext} templateContext the template context
44
+ * @returns {string | null} a JS string literal, or `null` to fall back to the runtime form
45
+ */
46
+ const getAnalyzableUrlSpecifier = (dep, templateContext) => {
47
+ const {
48
+ module: consumingModule,
49
+ moduleGraph,
50
+ chunkGraph,
51
+ runtime,
52
+ codeGenerationResults,
53
+ runtimeTemplate
54
+ } = templateContext;
55
+ const assetModule = moduleGraph.getModule(dep);
56
+ if (!assetModule || !codeGenerationResults.has(assetModule, runtime)) {
57
+ return null;
58
+ }
59
+ const urlData = codeGenerationResults.getData(assetModule, runtime, "url");
60
+ if (!urlData) return null;
61
+
62
+ const jsUrl = urlData[JAVASCRIPT_TYPE];
63
+ if (typeof jsUrl === "string") {
64
+ // The asset concatenates the runtime publicPath; rebuild a literal from the
65
+ // resolved filename. The base is the consuming chunk (`import.meta.url`).
66
+ if (jsUrl.includes(RuntimeGlobals.require)) {
67
+ const filename = codeGenerationResults.getData(
68
+ assetModule,
69
+ runtime,
70
+ "filename"
71
+ );
72
+ if (typeof filename !== "string") return null;
73
+ const { publicPath } = runtimeTemplate.outputOptions;
74
+ if (publicPath === "auto") {
75
+ const undo = runtimeTemplate._getModuleUndoPath(
76
+ consumingModule,
77
+ chunkGraph
78
+ );
79
+ return undo === null ? null : toJsStringLiteral(undo + filename);
80
+ }
81
+ if (typeof publicPath === "string" && !publicPath.includes("[")) {
82
+ return toJsStringLiteral(publicPath + filename);
83
+ }
84
+ return null;
85
+ }
86
+ // An already-quoted literal (generator `publicPath` / data: url) is used as-is;
87
+ // a raw value (external asset) is normalized to a quoted string.
88
+ return jsUrl.startsWith('"') ? jsUrl : toJsStringLiteral(jsUrl);
89
+ }
90
+
91
+ // Wrapper dropped: the asset is consumed as `asset-url` (absolute publicPath),
92
+ // so its resolved url is already a chunk-independent literal.
93
+ const assetUrl = urlData[ASSET_URL_TYPE];
94
+ return typeof assetUrl === "string" ? toJsStringLiteral(assetUrl) : null;
95
+ };
96
+
32
97
  class URLDependency extends ModuleDependency {
33
98
  /**
99
+ * Creates an instance of URLDependency.
34
100
  * @param {string} request request
35
101
  * @param {Range} range range of the arguments of new URL( |> ... <| )
36
102
  * @param {Range} outerRange range of the full |> new URL(...) <|
@@ -40,9 +106,22 @@ class URLDependency extends ModuleDependency {
40
106
  super(request);
41
107
  this.range = range;
42
108
  this.outerRange = outerRange;
109
+ /** @type {boolean} */
43
110
  this.relative = relative || false;
44
111
  /** @type {UsedByExports | undefined} */
45
112
  this.usedByExports = undefined;
113
+ /** @type {true | undefined} */
114
+ this.prefetch = undefined;
115
+ /** @type {true | undefined} */
116
+ this.preload = undefined;
117
+ /** @type {"high" | "low" | "auto" | undefined} */
118
+ this.fetchPriority = undefined;
119
+ /** @type {string | undefined} */
120
+ this.asAttribute = undefined;
121
+ /** @type {string | undefined} */
122
+ this.typeAttribute = undefined;
123
+ /** @type {string | undefined} */
124
+ this.mediaAttribute = undefined;
46
125
  }
47
126
 
48
127
  get type() {
@@ -54,18 +133,16 @@ class URLDependency extends ModuleDependency {
54
133
  }
55
134
 
56
135
  /**
136
+ * Returns function to determine if the connection is active.
57
137
  * @param {ModuleGraph} moduleGraph module graph
58
138
  * @returns {null | false | GetConditionFn} function to determine if the connection is active
59
139
  */
60
140
  getCondition(moduleGraph) {
61
- return getDependencyUsedByExportsCondition(
62
- this,
63
- this.usedByExports,
64
- moduleGraph
65
- );
141
+ return getDependencyUsedByExportsCondition(this, moduleGraph);
66
142
  }
67
143
 
68
144
  /**
145
+ * Creates an ignored module.
69
146
  * @param {string} context context directory
70
147
  * @returns {Module} ignored module
71
148
  */
@@ -74,25 +151,46 @@ class URLDependency extends ModuleDependency {
74
151
  }
75
152
 
76
153
  /**
154
+ * Serializes this instance into the provided serializer context.
77
155
  * @param {ObjectSerializerContext} context context
78
156
  */
79
157
  serialize(context) {
80
- const { write } = context;
81
- write(this.outerRange);
82
- write(this.relative);
83
- write(this.usedByExports);
158
+ context
159
+ .write(this.outerRange)
160
+ .write(this.relative)
161
+ .write(this.usedByExports)
162
+ .write(this.prefetch)
163
+ .write(this.preload)
164
+ .write(this.fetchPriority)
165
+ .write(this.asAttribute)
166
+ .write(this.typeAttribute)
167
+ .write(this.mediaAttribute);
84
168
  super.serialize(context);
85
169
  }
86
170
 
87
171
  /**
172
+ * Restores this instance from the provided deserializer context.
88
173
  * @param {ObjectDeserializerContext} context context
89
174
  */
90
175
  deserialize(context) {
91
- const { read } = context;
92
- this.outerRange = read();
93
- this.relative = read();
94
- this.usedByExports = read();
95
- super.deserialize(context);
176
+ this.outerRange = context.read();
177
+ const c1 = context.rest;
178
+ this.relative = c1.read();
179
+ const c2 = c1.rest;
180
+ this.usedByExports = c2.read();
181
+ const c3 = c2.rest;
182
+ this.prefetch = c3.read();
183
+ const c4 = c3.rest;
184
+ this.preload = c4.read();
185
+ const c5 = c4.rest;
186
+ this.fetchPriority = c5.read();
187
+ const c6 = c5.rest;
188
+ this.asAttribute = c6.read();
189
+ const c7 = c6.rest;
190
+ this.typeAttribute = c7.read();
191
+ const c8 = c7.rest;
192
+ this.mediaAttribute = c8.read();
193
+ super.deserialize(c8.rest);
96
194
  }
97
195
  }
98
196
 
@@ -100,6 +198,7 @@ URLDependency.Template = class URLDependencyTemplate extends (
100
198
  ModuleDependency.Template
101
199
  ) {
102
200
  /**
201
+ * Applies the plugin by registering its hooks on the compiler.
103
202
  * @param {Dependency} dependency the dependency for which the template should be applied
104
203
  * @param {ReplaceSource} source the current replace source which can be modified
105
204
  * @param {DependencyTemplateContext} templateContext the context object
@@ -125,36 +224,61 @@ URLDependency.Template = class URLDependencyTemplate extends (
125
224
  return;
126
225
  }
127
226
 
227
+ // For ESM module output, emit the analyzable `new URL("./asset", import.meta.url)`
228
+ // form (literal specifier, no runtime helpers) so other bundlers and webpack itself
229
+ // can statically follow the asset. `url: "relative"` and prefetch/preload hints
230
+ // (which need the runtime asset reference) keep the runtime form.
231
+ if (
232
+ !dep.relative &&
233
+ !dep.prefetch &&
234
+ !dep.preload &&
235
+ runtimeTemplate.supportsAnalyzableEsm()
236
+ ) {
237
+ const specifier = getAnalyzableUrlSpecifier(dep, templateContext);
238
+ if (specifier !== null) {
239
+ source.replace(
240
+ dep.range[0],
241
+ dep.range[1] - 1,
242
+ `/* asset import */ ${specifier}, ${runtimeTemplate.outputOptions.importMetaName}.url`
243
+ );
244
+ return;
245
+ }
246
+ }
247
+
128
248
  runtimeRequirements.add(RuntimeGlobals.require);
129
249
 
250
+ const module = moduleGraph.getModule(dep);
251
+ const moduleRaw = runtimeTemplate.moduleRaw({
252
+ chunkGraph,
253
+ module,
254
+ request: dep.request,
255
+ runtimeRequirements,
256
+ weak: false
257
+ });
258
+
259
+ // Resource hints fire eagerly at chunk startup via the marker
260
+ // requirement / `StartupAssetHintRuntimeModule`; the call site stays
261
+ // a plain URL expression, so the browser is already prefetching by
262
+ // the time user code reaches this line.
263
+ if (dep.prefetch || dep.preload) {
264
+ runtimeRequirements.add(RuntimeGlobals.startupAssetHints);
265
+ if (dep.prefetch) runtimeRequirements.add(RuntimeGlobals.prefetchAsset);
266
+ if (dep.preload) runtimeRequirements.add(RuntimeGlobals.preloadAsset);
267
+ }
268
+
130
269
  if (dep.relative) {
131
270
  runtimeRequirements.add(RuntimeGlobals.relativeUrl);
132
271
  source.replace(
133
272
  dep.outerRange[0],
134
273
  dep.outerRange[1] - 1,
135
- `/* asset import */ new ${
136
- RuntimeGlobals.relativeUrl
137
- }(${runtimeTemplate.moduleRaw({
138
- chunkGraph,
139
- module: moduleGraph.getModule(dep),
140
- request: dep.request,
141
- runtimeRequirements,
142
- weak: false
143
- })})`
274
+ `/* asset import */ new ${RuntimeGlobals.relativeUrl}(${moduleRaw})`
144
275
  );
145
276
  } else {
146
277
  runtimeRequirements.add(RuntimeGlobals.baseURI);
147
-
148
278
  source.replace(
149
279
  dep.range[0],
150
280
  dep.range[1] - 1,
151
- `/* asset import */ ${runtimeTemplate.moduleRaw({
152
- chunkGraph,
153
- module: moduleGraph.getModule(dep),
154
- request: dep.request,
155
- runtimeRequirements,
156
- weak: false
157
- })}, ${RuntimeGlobals.baseURI}`
281
+ `/* asset import */ ${moduleRaw}, ${RuntimeGlobals.baseURI}`
158
282
  );
159
283
  }
160
284
  }
@@ -22,6 +22,7 @@ const PLUGIN_NAME = "URLPlugin";
22
22
 
23
23
  class URLPlugin {
24
24
  /**
25
+ * Applies the plugin by registering its hooks on the compiler.
25
26
  * @param {Compiler} compiler compiler
26
27
  */
27
28
  apply(compiler) {
@@ -43,6 +44,7 @@ class URLPlugin {
43
44
  );
44
45
 
45
46
  /**
47
+ * Handles the hook callback for this code path.
46
48
  * @param {JavascriptParser} parser parser parser
47
49
  * @param {JavascriptParserOptions} parserOptions parserOptions
48
50
  * @returns {void}
@@ -12,43 +12,41 @@ const NullDependency = require("./NullDependency");
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
14
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, Range]>} ObjectDeserializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, Range]>} ObjectSerializerContext */
17
17
 
18
18
  class UnsupportedDependency extends NullDependency {
19
19
  /**
20
+ * Creates an instance of UnsupportedDependency.
20
21
  * @param {string} request the request string
21
22
  * @param {Range} range location in source code
22
23
  */
23
24
  constructor(request, range) {
24
25
  super();
25
26
 
27
+ /** @type {string} */
26
28
  this.request = request;
27
29
  this.range = range;
28
30
  }
29
31
 
30
32
  /**
33
+ * Serializes this instance into the provided serializer context.
31
34
  * @param {ObjectSerializerContext} context context
32
35
  */
33
36
  serialize(context) {
34
- const { write } = context;
35
-
36
- write(this.request);
37
- write(this.range);
38
-
37
+ context.write(this.request).write(this.range);
39
38
  super.serialize(context);
40
39
  }
41
40
 
42
41
  /**
42
+ * Restores this instance from the provided deserializer context.
43
43
  * @param {ObjectDeserializerContext} context context
44
44
  */
45
45
  deserialize(context) {
46
- const { read } = context;
47
-
48
- this.request = read();
49
- this.range = read();
50
-
51
- super.deserialize(context);
46
+ this.request = context.read();
47
+ const c1 = context.rest;
48
+ this.range = c1.read();
49
+ super.deserialize(c1.rest);
52
50
  }
53
51
  }
54
52
 
@@ -61,6 +59,7 @@ UnsupportedDependency.Template = class UnsupportedDependencyTemplate extends (
61
59
  NullDependency.Template
62
60
  ) {
63
61
  /**
62
+ * Applies the plugin by registering its hooks on the compiler.
64
63
  * @param {Dependency} dependency the dependency for which the template should be applied
65
64
  * @param {ReplaceSource} source the current replace source which can be modified
66
65
  * @param {DependencyTemplateContext} templateContext the context object