webpack 5.107.1 → 5.108.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 (360) hide show
  1. package/hot/dev-server.js +2 -0
  2. package/lib/APIPlugin.js +8 -4
  3. package/lib/CacheFacade.js +7 -0
  4. package/lib/Chunk.js +4 -0
  5. package/lib/ChunkGraph.js +30 -9
  6. package/lib/CircularModulesPlugin.js +190 -0
  7. package/lib/CleanPlugin.js +2 -1
  8. package/lib/Compilation.js +396 -65
  9. package/lib/Compiler.js +52 -14
  10. package/lib/ConcatenationScope.js +10 -3
  11. package/lib/ContextExclusionPlugin.js +1 -0
  12. package/lib/ContextModule.js +92 -47
  13. package/lib/ContextModuleFactory.js +45 -38
  14. package/lib/ContextReplacementPlugin.js +4 -0
  15. package/lib/DefinePlugin.js +89 -15
  16. package/lib/Dependency.js +111 -7
  17. package/lib/EntryOptionPlugin.js +39 -2
  18. package/lib/EntryPlugin.js +2 -0
  19. package/lib/ExportsInfo.js +314 -73
  20. package/lib/ExternalModule.js +82 -34
  21. package/lib/ExternalModuleFactoryPlugin.js +1 -0
  22. package/lib/ExternalsPlugin.js +1 -0
  23. package/lib/FileSystemInfo.js +173 -23
  24. package/lib/FlagAllModulesAsUsedPlugin.js +1 -5
  25. package/lib/FlagDependencyExportsPlugin.js +23 -0
  26. package/lib/FlagDependencyUsagePlugin.js +87 -5
  27. package/lib/FlagEntryExportAsUsedPlugin.js +2 -0
  28. package/lib/Generator.js +8 -0
  29. package/lib/HotModuleReplacementPlugin.js +65 -28
  30. package/lib/IgnorePlugin.js +1 -0
  31. package/lib/InitFragment.js +5 -0
  32. package/lib/JavascriptMetaInfoPlugin.js +7 -5
  33. package/lib/LazyBarrel.js +361 -0
  34. package/lib/LoaderTargetPlugin.js +1 -0
  35. package/lib/Module.js +21 -42
  36. package/lib/ModuleGraph.js +3 -2
  37. package/lib/ModuleProfile.js +27 -1
  38. package/lib/ModuleTemplate.js +2 -0
  39. package/lib/MultiCompiler.js +16 -0
  40. package/lib/MultiStats.js +1 -0
  41. package/lib/MultiWatching.js +2 -0
  42. package/lib/NodeStuffPlugin.js +22 -17
  43. package/lib/NormalModule.js +557 -77
  44. package/lib/NormalModuleReplacementPlugin.js +2 -0
  45. package/lib/PrefetchPlugin.js +2 -0
  46. package/lib/ProgressPlugin.js +9 -1
  47. package/lib/ProvidePlugin.js +1 -0
  48. package/lib/RawModule.js +20 -16
  49. package/lib/RecordIdsPlugin.js +1 -0
  50. package/lib/RuntimeGlobals.js +5 -0
  51. package/lib/RuntimePlugin.js +58 -26
  52. package/lib/RuntimeTemplate.js +278 -21
  53. package/lib/SelfModuleFactory.js +1 -0
  54. package/lib/SourceMapDevToolPlugin.js +105 -30
  55. package/lib/Stats.js +1 -0
  56. package/lib/Template.js +8 -2
  57. package/lib/TemplatedPathPlugin.js +473 -131
  58. package/lib/WarnCaseSensitiveModulesPlugin.js +1 -0
  59. package/lib/WarnDeprecatedOptionPlugin.js +4 -0
  60. package/lib/WarnNoModeSetPlugin.js +1 -0
  61. package/lib/WatchIgnorePlugin.js +1 -0
  62. package/lib/Watching.js +9 -0
  63. package/lib/WebpackOptionsApply.js +50 -5
  64. package/lib/asset/AssetBytesGenerator.js +11 -3
  65. package/lib/asset/AssetGenerator.js +47 -22
  66. package/lib/asset/AssetModule.js +47 -0
  67. package/lib/asset/AssetModulesPlugin.js +14 -14
  68. package/lib/asset/AssetParser.js +2 -2
  69. package/lib/asset/AssetSourceGenerator.js +8 -0
  70. package/lib/asset/RawDataUrlModule.js +12 -13
  71. package/lib/buildChunkGraph.js +88 -9
  72. package/lib/bun/BunTargetPlugin.js +48 -0
  73. package/lib/cache/AddBuildDependenciesPlugin.js +1 -0
  74. package/lib/cache/AddManagedPathsPlugin.js +3 -0
  75. package/lib/cache/IdleFileCachePlugin.js +4 -0
  76. package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
  77. package/lib/cache/PackFileCacheStrategy.js +1 -0
  78. package/lib/cache/ResolverCachePlugin.js +2 -0
  79. package/lib/cache/getLazyHashedEtag.js +9 -2
  80. package/lib/cache/mergeEtags.js +2 -0
  81. package/lib/cli.js +109 -19
  82. package/lib/config/browserslistTargetHandler.js +99 -0
  83. package/lib/config/defaults.js +147 -7
  84. package/lib/config/defineConfig.js +31 -0
  85. package/lib/config/normalization.js +5 -0
  86. package/lib/config/target.js +181 -2
  87. package/lib/container/ContainerEntryModule.js +15 -14
  88. package/lib/container/ContainerExposedDependency.js +2 -2
  89. package/lib/container/ContainerReferencePlugin.js +1 -1
  90. package/lib/container/FallbackDependency.js +5 -7
  91. package/lib/container/FallbackModule.js +10 -9
  92. package/lib/container/RemoteModule.js +20 -10
  93. package/lib/container/RemoteRuntimeModule.js +14 -12
  94. package/lib/css/CssGenerator.js +353 -327
  95. package/lib/css/CssInjectStyleRuntimeModule.js +36 -8
  96. package/lib/css/CssLoadingRuntimeModule.js +118 -47
  97. package/lib/css/CssModule.js +52 -23
  98. package/lib/css/CssModulesPlugin.js +107 -124
  99. package/lib/css/CssParser.js +2759 -2205
  100. package/lib/css/syntax.js +2859 -0
  101. package/lib/debug/ProfilingPlugin.js +2 -0
  102. package/lib/deno/DenoTargetPlugin.js +47 -0
  103. package/lib/dependencies/AMDDefineDependency.js +22 -17
  104. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +1 -0
  105. package/lib/dependencies/AMDRequireArrayDependency.js +7 -11
  106. package/lib/dependencies/AMDRequireContextDependency.js +7 -11
  107. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -0
  108. package/lib/dependencies/AMDRequireDependency.js +24 -20
  109. package/lib/dependencies/CachedConstDependency.js +3 -0
  110. package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
  111. package/lib/dependencies/CommonJsExportRequireDependency.js +79 -31
  112. package/lib/dependencies/CommonJsExportsDependency.js +21 -16
  113. package/lib/dependencies/CommonJsExportsParserPlugin.js +230 -7
  114. package/lib/dependencies/CommonJsFullRequireDependency.js +27 -19
  115. package/lib/dependencies/CommonJsImportsParserPlugin.js +51 -16
  116. package/lib/dependencies/CommonJsPlugin.js +1 -1
  117. package/lib/dependencies/CommonJsRequireContextDependency.js +10 -13
  118. package/lib/dependencies/CommonJsRequireDependency.js +42 -11
  119. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -14
  120. package/lib/dependencies/ConstDependency.js +16 -11
  121. package/lib/dependencies/ContextDependency.js +4 -0
  122. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -1
  123. package/lib/dependencies/ContextElementDependency.js +23 -14
  124. package/lib/dependencies/CreateRequireParserPlugin.js +1 -0
  125. package/lib/dependencies/CreateScriptUrlDependency.js +5 -7
  126. package/lib/dependencies/CriticalDependencyWarning.js +1 -0
  127. package/lib/dependencies/CssIcssExportDependency.js +512 -574
  128. package/lib/dependencies/CssIcssImportDependency.js +9 -9
  129. package/lib/dependencies/CssIcssSymbolDependency.js +22 -15
  130. package/lib/dependencies/CssImportDependency.js +25 -1
  131. package/lib/dependencies/CssUrlDependency.js +23 -14
  132. package/lib/dependencies/DllEntryDependency.js +9 -13
  133. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  134. package/lib/dependencies/ExportsInfoDependency.js +12 -12
  135. package/lib/dependencies/ExternalModuleDependency.js +8 -5
  136. package/lib/dependencies/ExternalModuleInitFragment.js +7 -5
  137. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +13 -10
  138. package/lib/dependencies/HarmonyAcceptDependency.js +11 -11
  139. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  140. package/lib/dependencies/HarmonyDetectionParserPlugin.js +47 -22
  141. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +28 -2
  142. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +46 -22
  143. package/lib/dependencies/HarmonyExportExpressionDependency.js +107 -30
  144. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -9
  145. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +109 -31
  146. package/lib/dependencies/HarmonyExportInitFragment.js +22 -20
  147. package/lib/dependencies/HarmonyExportSpecifierDependency.js +83 -18
  148. package/lib/dependencies/HarmonyExports.js +4 -1
  149. package/lib/dependencies/HarmonyImportDependency.js +24 -0
  150. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +110 -74
  151. package/lib/dependencies/HarmonyImportGuard.js +254 -0
  152. package/lib/dependencies/HarmonyImportSideEffectDependency.js +18 -1
  153. package/lib/dependencies/HarmonyImportSpecifierDependency.js +118 -14
  154. package/lib/dependencies/HarmonyLinkingError.js +1 -0
  155. package/lib/dependencies/HarmonyModulesPlugin.js +1 -0
  156. package/lib/dependencies/{HtmlScriptSrcDependency.js → HtmlEntryDependency.js} +267 -154
  157. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  158. package/lib/dependencies/HtmlInlineScriptDependency.js +20 -27
  159. package/lib/dependencies/HtmlInlineStyleDependency.js +62 -11
  160. package/lib/dependencies/HtmlSourceDependency.js +18 -0
  161. package/lib/dependencies/ImportContextDependency.js +5 -9
  162. package/lib/dependencies/ImportDependency.js +44 -2
  163. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  164. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  165. package/lib/dependencies/ImportMetaPlugin.js +74 -30
  166. package/lib/dependencies/ImportParserPlugin.js +19 -0
  167. package/lib/dependencies/ImportWeakDependency.js +1 -0
  168. package/lib/dependencies/JsonExportsDependency.js +9 -9
  169. package/lib/dependencies/LoaderImportDependency.js +1 -0
  170. package/lib/dependencies/LocalModule.js +11 -12
  171. package/lib/dependencies/LocalModuleDependency.js +11 -13
  172. package/lib/dependencies/ModuleDecoratorDependency.js +9 -9
  173. package/lib/dependencies/ModuleDependency.js +7 -0
  174. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  175. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  176. package/lib/dependencies/ModuleInitFragmentDependency.js +15 -11
  177. package/lib/dependencies/ProvidedDependency.js +31 -27
  178. package/lib/dependencies/PureExpressionDependency.js +7 -9
  179. package/lib/dependencies/RequireEnsureDependency.js +12 -13
  180. package/lib/dependencies/RequireHeaderDependency.js +3 -4
  181. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  182. package/lib/dependencies/RequireResolveContextDependency.js +7 -11
  183. package/lib/dependencies/RequireResolveDependency.js +1 -0
  184. package/lib/dependencies/RequireResolveHeaderDependency.js +3 -5
  185. package/lib/dependencies/RuntimeRequirementsDependency.js +6 -7
  186. package/lib/dependencies/StaticExportsDependency.js +10 -10
  187. package/lib/dependencies/SystemPlugin.js +2 -0
  188. package/lib/dependencies/URLContextDependency.js +5 -7
  189. package/lib/dependencies/URLDependency.js +14 -16
  190. package/lib/dependencies/UnsupportedDependency.js +8 -13
  191. package/lib/dependencies/WebAssemblyExportImportedDependency.js +11 -16
  192. package/lib/dependencies/WebAssemblyImportDependency.js +14 -16
  193. package/lib/dependencies/WebpackIsIncludedDependency.js +1 -0
  194. package/lib/dependencies/WorkerDependency.js +19 -8
  195. package/lib/dependencies/WorkerPlugin.js +40 -10
  196. package/lib/dependencies/processExportInfo.js +13 -11
  197. package/lib/dll/DelegatedModule.js +29 -15
  198. package/lib/dll/DelegatedModuleFactoryPlugin.js +1 -0
  199. package/lib/dll/DelegatedPlugin.js +1 -0
  200. package/lib/dll/DllEntryPlugin.js +3 -0
  201. package/lib/dll/DllModule.js +3 -2
  202. package/lib/dll/DllPlugin.js +16 -0
  203. package/lib/dll/DllReferencePlugin.js +3 -0
  204. package/lib/dll/LibManifestPlugin.js +1 -0
  205. package/lib/electron/ElectronTargetPlugin.js +22 -4
  206. package/lib/errors/ConcurrentCompilationError.js +1 -0
  207. package/lib/errors/HookWebpackError.js +11 -13
  208. package/lib/errors/IgnoreErrorModuleFactory.js +1 -0
  209. package/lib/errors/InvalidDependenciesModuleWarning.js +2 -0
  210. package/lib/errors/JSONParseError.js +9 -8
  211. package/lib/errors/ModuleBuildError.js +16 -13
  212. package/lib/errors/ModuleDependencyError.js +8 -1
  213. package/lib/errors/ModuleDependencyWarning.js +8 -1
  214. package/lib/errors/ModuleError.js +5 -11
  215. package/lib/errors/ModuleHashingError.js +4 -0
  216. package/lib/errors/ModuleNotFoundError.js +3 -0
  217. package/lib/errors/ModuleParseError.js +5 -11
  218. package/lib/errors/ModuleRestoreError.js +2 -0
  219. package/lib/errors/ModuleStoreError.js +3 -0
  220. package/lib/errors/ModuleWarning.js +7 -11
  221. package/lib/errors/NodeStuffInWebError.js +1 -0
  222. package/lib/errors/NonErrorEmittedError.js +2 -0
  223. package/lib/errors/UnhandledSchemeError.js +1 -0
  224. package/lib/esm/ModuleChunkLoadingPlugin.js +0 -1
  225. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +28 -23
  226. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  227. package/lib/hmr/HotModuleReplacementRuntimeModule.js +7 -0
  228. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  229. package/lib/hmr/LazyCompilationPlugin.js +134 -6
  230. package/lib/html/HtmlGenerator.js +292 -50
  231. package/lib/html/HtmlModule.js +40 -0
  232. package/lib/html/HtmlModulesPlugin.js +287 -60
  233. package/lib/html/HtmlParser.js +1108 -1099
  234. package/lib/html/{walkHtmlTokens.js → syntax.js} +4701 -212
  235. package/lib/ids/IdHelpers.js +4 -2
  236. package/lib/index.js +19 -0
  237. package/lib/javascript/BasicEvaluatedExpression.js +1 -0
  238. package/lib/javascript/EnableChunkLoadingPlugin.js +1 -0
  239. package/lib/javascript/JavascriptGenerator.js +6 -2
  240. package/lib/javascript/JavascriptModule.js +54 -0
  241. package/lib/javascript/JavascriptModulesPlugin.js +257 -102
  242. package/lib/javascript/JavascriptParser.js +286 -159
  243. package/lib/json/JsonModule.js +40 -0
  244. package/lib/json/JsonModulesPlugin.js +7 -0
  245. package/lib/json/JsonParser.js +4 -2
  246. package/lib/library/AssignLibraryPlugin.js +5 -3
  247. package/lib/library/ExportPropertyLibraryPlugin.js +1 -0
  248. package/lib/library/FalseIIFEUmdWarning.js +1 -0
  249. package/lib/library/ModuleLibraryPlugin.js +54 -29
  250. package/lib/library/SystemLibraryPlugin.js +3 -3
  251. package/lib/node/NodeTargetPlugin.js +1 -0
  252. package/lib/node/NodeWatchFileSystem.js +38 -22
  253. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
  254. package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
  255. package/lib/optimize/ConcatenatedModule.js +397 -78
  256. package/lib/optimize/ConstExportsPlugin.js +211 -0
  257. package/lib/optimize/InlineExports.js +178 -0
  258. package/lib/optimize/InnerGraph.js +372 -275
  259. package/lib/optimize/InnerGraphPlugin.js +196 -99
  260. package/lib/optimize/ModuleConcatenationPlugin.js +56 -25
  261. package/lib/optimize/RealContentHashPlugin.js +14 -1
  262. package/lib/optimize/SideEffectsFlagPlugin.js +234 -64
  263. package/lib/runtime/AsyncModuleRuntimeModule.js +32 -30
  264. package/lib/runtime/AutoPublicPathRuntimeModule.js +11 -5
  265. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
  266. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +6 -4
  267. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +33 -4
  268. package/lib/runtime/GetChunkFilenameRuntimeModule.js +82 -3
  269. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  270. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
  271. package/lib/runtime/LoadScriptRuntimeModule.js +18 -13
  272. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +39 -26
  273. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
  274. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  275. package/lib/runtime/RelativeUrlRuntimeModule.js +3 -2
  276. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
  277. package/lib/runtime/StartupEntrypointRuntimeModule.js +4 -3
  278. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  279. package/lib/schemes/HttpUriPlugin.js +3 -2
  280. package/lib/serialization/AggregateErrorSerializer.js +7 -6
  281. package/lib/serialization/ArraySerializer.js +4 -8
  282. package/lib/serialization/BinaryMiddleware.js +538 -468
  283. package/lib/serialization/DateObjectSerializer.js +2 -2
  284. package/lib/serialization/ErrorObjectSerializer.js +7 -6
  285. package/lib/serialization/MapObjectSerializer.js +5 -9
  286. package/lib/serialization/NullPrototypeObjectSerializer.js +7 -9
  287. package/lib/serialization/ObjectMiddleware.js +50 -13
  288. package/lib/serialization/PlainObjectSerializer.js +9 -8
  289. package/lib/serialization/RegExpObjectSerializer.js +2 -2
  290. package/lib/serialization/Serializer.js +1 -0
  291. package/lib/serialization/SetObjectSerializer.js +4 -8
  292. package/lib/sharing/ConsumeSharedModule.js +6 -7
  293. package/lib/sharing/ConsumeSharedPlugin.js +1 -0
  294. package/lib/sharing/ConsumeSharedRuntimeModule.js +46 -41
  295. package/lib/sharing/ProvideSharedDependency.js +30 -15
  296. package/lib/sharing/ProvideSharedModule.js +30 -11
  297. package/lib/sharing/ProvideSharedPlugin.js +4 -2
  298. package/lib/sharing/SharePlugin.js +3 -0
  299. package/lib/sharing/ShareRuntimeModule.js +18 -16
  300. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  301. package/lib/sharing/utils.js +1 -1
  302. package/lib/stats/DefaultStatsFactoryPlugin.js +4 -6
  303. package/lib/stats/DefaultStatsPrinterPlugin.js +14 -14
  304. package/lib/stats/StatsFactory.js +11 -9
  305. package/lib/stats/StatsPrinter.js +9 -2
  306. package/lib/url/URLParserPlugin.js +5 -2
  307. package/lib/util/AsyncQueue.js +10 -0
  308. package/lib/util/LazyBucketSortedSet.js +5 -0
  309. package/lib/util/LazySet.js +6 -4
  310. package/lib/util/LocConverter.js +11 -1
  311. package/lib/util/Semaphore.js +1 -0
  312. package/lib/util/SourceProcessor.js +106 -0
  313. package/lib/util/TupleSet.js +1 -0
  314. package/lib/util/WeakTupleMap.js +27 -1
  315. package/lib/util/chainedImports.js +3 -3
  316. package/lib/util/comparators.js +2 -2
  317. package/lib/util/concatenate.js +31 -7
  318. package/lib/util/createHash.js +0 -1
  319. package/lib/util/deterministicGrouping.js +19 -12
  320. package/lib/util/extractSourceMap.js +1 -1
  321. package/lib/util/findGraphRoots.js +2 -0
  322. package/lib/util/fs.js +16 -6
  323. package/lib/util/hash/DebugHash.js +1 -0
  324. package/lib/util/hash/hash-digest.js +24 -15
  325. package/lib/util/identifier.js +7 -0
  326. package/lib/util/internalSerializables.js +11 -2
  327. package/lib/util/magicComment.js +42 -0
  328. package/lib/util/makeSerializable.js +1 -0
  329. package/lib/util/nonNumericOnlyHash.js +30 -1
  330. package/lib/util/property.js +7 -1
  331. package/lib/util/publicPathPlaceholder.js +64 -0
  332. package/lib/util/registerExternalSerializer.js +4 -4
  333. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  334. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
  335. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -96
  336. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
  337. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +1 -1
  338. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  339. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
  340. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -3
  341. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -1
  342. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
  343. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
  344. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -0
  345. package/lib/wasm-sync/WebAssemblyParser.js +7 -3
  346. package/lib/web/JsonpChunkLoadingRuntimeModule.js +45 -39
  347. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +11 -10
  348. package/package.json +36 -28
  349. package/schemas/WebpackOptions.check.js +1 -1
  350. package/schemas/WebpackOptions.json +212 -3
  351. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -1
  352. package/schemas/plugins/HtmlParserOptions.check.d.ts +7 -0
  353. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  354. package/schemas/plugins/HtmlParserOptions.json +3 -0
  355. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  356. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  357. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  358. package/types.d.ts +1592 -314
  359. package/lib/css/walkCssTokens.js +0 -2020
  360. package/lib/util/AppendOnlyStackedSet.js +0 -93
@@ -7,7 +7,10 @@
7
7
 
8
8
  const Dependency = require("../Dependency");
9
9
  const InitFragment = require("../InitFragment");
10
+ const Template = require("../Template");
11
+ const { InlinedUsedName } = require("../optimize/InlineExports");
10
12
  const makeSerializable = require("../util/makeSerializable");
13
+ const { propertyAccess } = require("../util/property");
11
14
  const ModuleDependency = require("./ModuleDependency");
12
15
 
13
16
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
@@ -18,21 +21,11 @@ const ModuleDependency = require("./ModuleDependency");
18
21
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
19
22
  /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
20
23
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
24
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ExportInfoName[]]>} ObjectDeserializerContext */
25
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ExportInfoName[]]>} ObjectSerializerContext */
23
26
  /** @typedef {import("../util/Hash")} Hash */
24
27
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
25
28
 
26
- /**
27
- * Returns the converted path.
28
- * @param {string[] | null} path the property path array
29
- * @returns {string} the converted path
30
- */
31
- const pathToString = (path) =>
32
- path !== null && path.length > 0
33
- ? path.map((part) => `[${JSON.stringify(part)}]`).join("")
34
- : "";
35
-
36
29
  class ProvidedDependency extends ModuleDependency {
37
30
  /**
38
31
  * Creates an instance of ProvidedDependency.
@@ -43,7 +36,9 @@ class ProvidedDependency extends ModuleDependency {
43
36
  */
44
37
  constructor(request, identifier, ids, range) {
45
38
  super(request);
39
+ /** @type {string} */
46
40
  this.identifier = identifier;
41
+ /** @type {string[]} */
47
42
  this.ids = ids;
48
43
  this.range = range;
49
44
  /** @type {undefined | string} */
@@ -88,9 +83,7 @@ class ProvidedDependency extends ModuleDependency {
88
83
  * @param {ObjectSerializerContext} context context
89
84
  */
90
85
  serialize(context) {
91
- const { write } = context;
92
- write(this.identifier);
93
- write(this.ids);
86
+ context.write(this.identifier).write(this.ids);
94
87
  super.serialize(context);
95
88
  }
96
89
 
@@ -99,10 +92,10 @@ class ProvidedDependency extends ModuleDependency {
99
92
  * @param {ObjectDeserializerContext} context context
100
93
  */
101
94
  deserialize(context) {
102
- const { read } = context;
103
- this.identifier = read();
104
- this.ids = read();
105
- super.deserialize(context);
95
+ this.identifier = context.read();
96
+ const c1 = context.rest;
97
+ this.ids = c1.read();
98
+ super.deserialize(c1.rest);
106
99
  }
107
100
  }
108
101
 
@@ -137,16 +130,27 @@ class ProvidedDependencyTemplate extends ModuleDependency.Template {
137
130
  (moduleGraph.getConnection(dep));
138
131
  const exportsInfo = moduleGraph.getExportsInfo(connection.module);
139
132
  const usedName = exportsInfo.getUsedName(dep.ids, runtime);
133
+
134
+ const moduleRaw = runtimeTemplate.moduleRaw({
135
+ module: moduleGraph.getModule(dep),
136
+ chunkGraph,
137
+ request: dep.request,
138
+ runtimeRequirements
139
+ });
140
+
141
+ const provided = !usedName
142
+ ? moduleRaw
143
+ : usedName instanceof InlinedUsedName
144
+ ? `(${moduleRaw}, ${usedName.render(
145
+ Template.toNormalComment(
146
+ `inlined export ${propertyAccess(dep.ids)}`
147
+ )
148
+ )})`
149
+ : `${moduleRaw}${propertyAccess(usedName, 0)}`;
150
+
140
151
  initFragments.push(
141
152
  new InitFragment(
142
- `/* provided dependency */ var ${
143
- dep.identifier
144
- } = ${runtimeTemplate.moduleExports({
145
- module: moduleGraph.getModule(dep),
146
- chunkGraph,
147
- request: dep.request,
148
- runtimeRequirements
149
- })}${pathToString(/** @type {string[] | null} */ (usedName))};\n`,
153
+ `/* provided dependency */ var ${dep.identifier} = ${provided};\n`,
150
154
  InitFragment.STAGE_PROVIDES,
151
155
  1,
152
156
  `provided ${dep.identifier}`
@@ -19,8 +19,8 @@ const NullDependency = require("./NullDependency");
19
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
20
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
21
21
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
22
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
23
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
22
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Set<string> | false]>} ObjectDeserializerContext */
23
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Set<string> | false]>} ObjectSerializerContext */
24
24
  /** @typedef {import("../util/Hash")} Hash */
25
25
 
26
26
  class PureExpressionDependency extends NullDependency {
@@ -100,9 +100,7 @@ class PureExpressionDependency extends NullDependency {
100
100
  * @param {ObjectSerializerContext} context context
101
101
  */
102
102
  serialize(context) {
103
- const { write } = context;
104
- write(this.range);
105
- write(this.usedByExports);
103
+ context.write(this.range).write(this.usedByExports);
106
104
  super.serialize(context);
107
105
  }
108
106
 
@@ -111,10 +109,10 @@ class PureExpressionDependency extends NullDependency {
111
109
  * @param {ObjectDeserializerContext} context context
112
110
  */
113
111
  deserialize(context) {
114
- const { read } = context;
115
- this.range = read();
116
- this.usedByExports = read();
117
- super.deserialize(context);
112
+ this.range = context.read();
113
+ const c1 = context.rest;
114
+ this.usedByExports = c1.read();
115
+ super.deserialize(c1.rest);
118
116
  }
119
117
  }
120
118
 
@@ -14,8 +14,8 @@ const NullDependency = require("./NullDependency");
14
14
  /** @typedef {import("../Dependency")} Dependency */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range, Range | false]>} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range, Range | false]>} ObjectSerializerContext */
19
19
 
20
20
  class RequireEnsureDependency extends NullDependency {
21
21
  /**
@@ -41,11 +41,10 @@ class RequireEnsureDependency extends NullDependency {
41
41
  * @param {ObjectSerializerContext} context context
42
42
  */
43
43
  serialize(context) {
44
- const { write } = context;
45
-
46
- write(this.range);
47
- write(this.contentRange);
48
- write(this.errorHandlerRange);
44
+ context
45
+ .write(this.range)
46
+ .write(this.contentRange)
47
+ .write(this.errorHandlerRange);
49
48
 
50
49
  super.serialize(context);
51
50
  }
@@ -55,13 +54,13 @@ class RequireEnsureDependency extends NullDependency {
55
54
  * @param {ObjectDeserializerContext} context context
56
55
  */
57
56
  deserialize(context) {
58
- const { read } = context;
59
-
60
- this.range = read();
61
- this.contentRange = read();
62
- this.errorHandlerRange = read();
57
+ this.range = context.read();
58
+ const c1 = context.rest;
59
+ this.contentRange = c1.read();
60
+ const c2 = c1.rest;
61
+ this.errorHandlerRange = c2.read();
63
62
 
64
- super.deserialize(context);
63
+ super.deserialize(c2.rest);
65
64
  }
66
65
  }
67
66
 
@@ -13,8 +13,8 @@ const NullDependency = require("./NullDependency");
13
13
  /** @typedef {import("../Dependency")} Dependency */
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
15
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range]>} ObjectDeserializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range]>} ObjectSerializerContext */
18
18
 
19
19
  class RequireHeaderDependency extends NullDependency {
20
20
  /**
@@ -32,8 +32,7 @@ class RequireHeaderDependency extends NullDependency {
32
32
  * @param {ObjectSerializerContext} context context
33
33
  */
34
34
  serialize(context) {
35
- const { write } = context;
36
- write(this.range);
35
+ context.write(this.range);
37
36
  super.serialize(context);
38
37
  }
39
38
 
@@ -25,6 +25,7 @@ module.exports = class RequireIncludeDependencyParserPlugin {
25
25
  * @param {boolean} warn true: warn about deprecation, false: don't warn
26
26
  */
27
27
  constructor(warn) {
28
+ /** @type {boolean} */
28
29
  this.warn = warn;
29
30
  }
30
31
 
@@ -90,8 +91,10 @@ class RequireIncludeDeprecationWarning extends WebpackError {
90
91
  constructor(loc) {
91
92
  super("require.include() is deprecated and will be removed soon.");
92
93
 
94
+ /** @type {string} */
93
95
  this.name = "RequireIncludeDeprecationWarning";
94
96
 
97
+ /** @type {DependencyLocation} */
95
98
  this.loc = loc;
96
99
  }
97
100
  }
@@ -10,8 +10,8 @@ const ContextDependency = require("./ContextDependency");
10
10
  const ContextDependencyTemplateAsId = require("./ContextDependencyTemplateAsId");
11
11
 
12
12
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
13
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range]>} ObjectDeserializerContext */
14
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range]>} ObjectSerializerContext */
15
15
  /** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
16
16
 
17
17
  class RequireResolveContextDependency extends ContextDependency {
@@ -38,10 +38,7 @@ class RequireResolveContextDependency extends ContextDependency {
38
38
  * @param {ObjectSerializerContext} context context
39
39
  */
40
40
  serialize(context) {
41
- const { write } = context;
42
-
43
- write(this.range);
44
- write(this.valueRange);
41
+ context.write(this.range).write(this.valueRange);
45
42
 
46
43
  super.serialize(context);
47
44
  }
@@ -51,12 +48,11 @@ class RequireResolveContextDependency extends ContextDependency {
51
48
  * @param {ObjectDeserializerContext} context context
52
49
  */
53
50
  deserialize(context) {
54
- const { read } = context;
55
-
56
- this.range = read();
57
- this.valueRange = read();
51
+ this.range = context.read();
52
+ const c1 = context.rest;
53
+ this.valueRange = c1.read();
58
54
 
59
- super.deserialize(context);
55
+ super.deserialize(c1.rest);
60
56
  }
61
57
  }
62
58
 
@@ -26,6 +26,7 @@ class RequireResolveDependency extends ModuleDependency {
26
26
  super(request);
27
27
 
28
28
  this.range = range;
29
+ /** @type {string | undefined} */
29
30
  this._context = context;
30
31
  }
31
32
 
@@ -12,8 +12,8 @@ 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<[Range]>} ObjectDeserializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range]>} ObjectSerializerContext */
17
17
 
18
18
  class RequireResolveHeaderDependency extends NullDependency {
19
19
  /**
@@ -33,9 +33,7 @@ class RequireResolveHeaderDependency extends NullDependency {
33
33
  * @param {ObjectSerializerContext} context context
34
34
  */
35
35
  serialize(context) {
36
- const { write } = context;
37
-
38
- write(this.range);
36
+ context.write(this.range);
39
37
 
40
38
  super.serialize(context);
41
39
  }
@@ -13,8 +13,8 @@ const NullDependency = require("./NullDependency");
13
13
  /** @typedef {import("../Dependency")} Dependency */
14
14
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Set<string>]>} ObjectDeserializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Set<string>]>} ObjectSerializerContext */
18
18
  /** @typedef {import("../util/Hash")} Hash */
19
19
 
20
20
  class RuntimeRequirementsDependency extends NullDependency {
@@ -24,6 +24,7 @@ class RuntimeRequirementsDependency extends NullDependency {
24
24
  */
25
25
  constructor(runtimeRequirements) {
26
26
  super();
27
+ /** @type {Set<string>} */
27
28
  this.runtimeRequirements = new Set(runtimeRequirements);
28
29
  /** @type {undefined | string} */
29
30
  this._hashUpdate = undefined;
@@ -47,8 +48,7 @@ class RuntimeRequirementsDependency extends NullDependency {
47
48
  * @param {ObjectSerializerContext} context context
48
49
  */
49
50
  serialize(context) {
50
- const { write } = context;
51
- write(this.runtimeRequirements);
51
+ context.write(this.runtimeRequirements);
52
52
  super.serialize(context);
53
53
  }
54
54
 
@@ -57,9 +57,8 @@ class RuntimeRequirementsDependency extends NullDependency {
57
57
  * @param {ObjectDeserializerContext} context context
58
58
  */
59
59
  deserialize(context) {
60
- const { read } = context;
61
- this.runtimeRequirements = read();
62
- super.deserialize(context);
60
+ this.runtimeRequirements = context.read();
61
+ super.deserialize(context.rest);
63
62
  }
64
63
  }
65
64
 
@@ -10,11 +10,11 @@ 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
20
  * Creates an instance of StaticExportsDependency.
@@ -23,7 +23,9 @@ class StaticExportsDependency extends NullDependency {
23
23
  */
24
24
  constructor(exports, canMangle) {
25
25
  super();
26
+ /** @type {Exports} */
26
27
  this.exports = exports;
28
+ /** @type {boolean} */
27
29
  this.canMangle = canMangle;
28
30
  }
29
31
 
@@ -49,9 +51,7 @@ class StaticExportsDependency extends NullDependency {
49
51
  * @param {ObjectSerializerContext} context context
50
52
  */
51
53
  serialize(context) {
52
- const { write } = context;
53
- write(this.exports);
54
- write(this.canMangle);
54
+ context.write(this.exports).write(this.canMangle);
55
55
  super.serialize(context);
56
56
  }
57
57
 
@@ -60,10 +60,10 @@ class StaticExportsDependency extends NullDependency {
60
60
  * @param {ObjectDeserializerContext} context context
61
61
  */
62
62
  deserialize(context) {
63
- const { read } = context;
64
- this.exports = read();
65
- this.canMangle = read();
66
- super.deserialize(context);
63
+ this.exports = context.read();
64
+ const c1 = context.rest;
65
+ this.canMangle = c1.read();
66
+ super.deserialize(c1.rest);
67
67
  }
68
68
  }
69
69
 
@@ -155,8 +155,10 @@ class SystemImportDeprecationWarning extends WebpackError {
155
155
  "For more info visit https://webpack.js.org/guides/code-splitting/"
156
156
  );
157
157
 
158
+ /** @type {string} */
158
159
  this.name = "SystemImportDeprecationWarning";
159
160
 
161
+ /** @type {DependencyLocation} */
160
162
  this.loc = loc;
161
163
  }
162
164
  }
@@ -11,8 +11,8 @@ 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
 
@@ -42,8 +42,7 @@ class URLContextDependency extends ContextDependency {
42
42
  * @param {ObjectSerializerContext} context context
43
43
  */
44
44
  serialize(context) {
45
- const { write } = context;
46
- write(this.valueRange);
45
+ context.write(this.valueRange);
47
46
  super.serialize(context);
48
47
  }
49
48
 
@@ -52,9 +51,8 @@ class URLContextDependency extends ContextDependency {
52
51
  * @param {ObjectDeserializerContext} context context
53
52
  */
54
53
  deserialize(context) {
55
- const { read } = context;
56
- this.valueRange = read();
57
- super.deserialize(context);
54
+ this.valueRange = context.read();
55
+ super.deserialize(context.rest);
58
56
  }
59
57
  }
60
58
 
@@ -22,8 +22,8 @@ const ModuleDependency = require("./ModuleDependency");
22
22
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
23
23
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
24
24
  /** @typedef {import("../optimize/InnerGraph").UsedByExports} UsedByExports */
25
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
26
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
25
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, boolean, UsedByExports | undefined]>} ObjectDeserializerContext */
26
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, boolean, UsedByExports | undefined]>} ObjectSerializerContext */
27
27
 
28
28
  const getIgnoredRawDataUrlModule = memoize(
29
29
  () => new RawDataUrlModule("data:,", "ignored-asset", "(ignored asset)")
@@ -41,6 +41,7 @@ class URLDependency extends ModuleDependency {
41
41
  super(request);
42
42
  this.range = range;
43
43
  this.outerRange = outerRange;
44
+ /** @type {boolean} */
44
45
  this.relative = relative || false;
45
46
  /** @type {UsedByExports | undefined} */
46
47
  this.usedByExports = undefined;
@@ -60,11 +61,7 @@ class URLDependency extends ModuleDependency {
60
61
  * @returns {null | false | GetConditionFn} function to determine if the connection is active
61
62
  */
62
63
  getCondition(moduleGraph) {
63
- return getDependencyUsedByExportsCondition(
64
- this,
65
- this.usedByExports,
66
- moduleGraph
67
- );
64
+ return getDependencyUsedByExportsCondition(this, moduleGraph);
68
65
  }
69
66
 
70
67
  /**
@@ -81,10 +78,10 @@ class URLDependency extends ModuleDependency {
81
78
  * @param {ObjectSerializerContext} context context
82
79
  */
83
80
  serialize(context) {
84
- const { write } = context;
85
- write(this.outerRange);
86
- write(this.relative);
87
- write(this.usedByExports);
81
+ context
82
+ .write(this.outerRange)
83
+ .write(this.relative)
84
+ .write(this.usedByExports);
88
85
  super.serialize(context);
89
86
  }
90
87
 
@@ -93,11 +90,12 @@ class URLDependency extends ModuleDependency {
93
90
  * @param {ObjectDeserializerContext} context context
94
91
  */
95
92
  deserialize(context) {
96
- const { read } = context;
97
- this.outerRange = read();
98
- this.relative = read();
99
- this.usedByExports = read();
100
- super.deserialize(context);
93
+ this.outerRange = context.read();
94
+ const c1 = context.rest;
95
+ this.relative = c1.read();
96
+ const c2 = c1.rest;
97
+ this.usedByExports = c2.read();
98
+ super.deserialize(c2.rest);
101
99
  }
102
100
  }
103
101
 
@@ -12,8 +12,8 @@ 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
  /**
@@ -24,6 +24,7 @@ class UnsupportedDependency extends NullDependency {
24
24
  constructor(request, range) {
25
25
  super();
26
26
 
27
+ /** @type {string} */
27
28
  this.request = request;
28
29
  this.range = range;
29
30
  }
@@ -33,11 +34,7 @@ class UnsupportedDependency extends NullDependency {
33
34
  * @param {ObjectSerializerContext} context context
34
35
  */
35
36
  serialize(context) {
36
- const { write } = context;
37
-
38
- write(this.request);
39
- write(this.range);
40
-
37
+ context.write(this.request).write(this.range);
41
38
  super.serialize(context);
42
39
  }
43
40
 
@@ -46,12 +43,10 @@ class UnsupportedDependency extends NullDependency {
46
43
  * @param {ObjectDeserializerContext} context context
47
44
  */
48
45
  deserialize(context) {
49
- const { read } = context;
50
-
51
- this.request = read();
52
- this.range = read();
53
-
54
- super.deserialize(context);
46
+ this.request = context.read();
47
+ const c1 = context.rest;
48
+ this.range = c1.read();
49
+ super.deserialize(c1.rest);
55
50
  }
56
51
  }
57
52
 
@@ -12,8 +12,8 @@ const ModuleDependency = require("./ModuleDependency");
12
12
  /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
13
13
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
14
14
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, string]>} ObjectDeserializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, string]>} ObjectSerializerContext */
17
17
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
18
18
 
19
19
  class WebAssemblyExportImportedDependency extends ModuleDependency {
@@ -49,7 +49,8 @@ class WebAssemblyExportImportedDependency extends ModuleDependency {
49
49
  * @returns {ReferencedExports} referenced exports
50
50
  */
51
51
  getReferencedExports(moduleGraph, runtime) {
52
- return [[this.name]];
52
+ // re-exporting wasm glue needs the real binding, never an inlined literal
53
+ return [{ name: [this.name], canInline: false }];
53
54
  }
54
55
 
55
56
  get type() {
@@ -65,12 +66,7 @@ class WebAssemblyExportImportedDependency extends ModuleDependency {
65
66
  * @param {ObjectSerializerContext} context context
66
67
  */
67
68
  serialize(context) {
68
- const { write } = context;
69
-
70
- write(this.exportName);
71
- write(this.name);
72
- write(this.valueType);
73
-
69
+ context.write(this.exportName).write(this.name).write(this.valueType);
74
70
  super.serialize(context);
75
71
  }
76
72
 
@@ -79,13 +75,12 @@ class WebAssemblyExportImportedDependency extends ModuleDependency {
79
75
  * @param {ObjectDeserializerContext} context context
80
76
  */
81
77
  deserialize(context) {
82
- const { read } = context;
83
-
84
- this.exportName = read();
85
- this.name = read();
86
- this.valueType = read();
87
-
88
- super.deserialize(context);
78
+ this.exportName = context.read();
79
+ const c1 = context.rest;
80
+ this.name = c1.read();
81
+ const c2 = c1.rest;
82
+ this.valueType = c2.read();
83
+ super.deserialize(c2.rest);
89
84
  }
90
85
  }
91
86