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
@@ -67,7 +67,9 @@ class Profiler {
67
67
  constructor(inspector) {
68
68
  /** @type {undefined | Session} */
69
69
  this.session = undefined;
70
+ /** @type {Inspector} */
70
71
  this.inspector = inspector;
72
+ /** @type {number} */
71
73
  this._startTime = 0;
72
74
  }
73
75
 
@@ -0,0 +1,47 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const ExternalsPlugin = require("../ExternalsPlugin");
9
+ const NodeTargetPlugin = require("../node/NodeTargetPlugin");
10
+
11
+ /** @typedef {import("../Compiler")} Compiler */
12
+
13
+ // Deno only resolves node.js core modules through the `node:` specifier, so the
14
+ // prefix is baked into the external request for both `import` and `require`.
15
+ // cspell:word pnpapi
16
+ const coreModules = new Set(
17
+ NodeTargetPlugin.builtins.filter(
18
+ (builtin) => typeof builtin === "string" && builtin !== "pnpapi"
19
+ )
20
+ );
21
+
22
+ // Deno's own import protocols are resolved by the runtime, never bundled.
23
+ const DENO_PROTOCOLS = /^(?:npm|jsr|https?):/;
24
+
25
+ class DenoTargetPlugin {
26
+ /**
27
+ * Applies the plugin by registering its hooks on the compiler.
28
+ * @param {Compiler} compiler the compiler instance
29
+ * @returns {void}
30
+ */
31
+ apply(compiler) {
32
+ new ExternalsPlugin(
33
+ (dependency) =>
34
+ dependency.category === "commonjs" ? "node-commonjs" : "module-import",
35
+ ({ request }, callback) => {
36
+ if (!request) return callback();
37
+ if (request.startsWith("node:") || DENO_PROTOCOLS.test(request)) {
38
+ return callback(null, request);
39
+ }
40
+ if (coreModules.has(request)) return callback(null, `node:${request}`);
41
+ callback();
42
+ }
43
+ ).apply(compiler);
44
+ }
45
+ }
46
+
47
+ module.exports = DenoTargetPlugin;
@@ -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 | null, Range | null, Range | null, string | null, LocalModule | null]>} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | null, Range | null, Range | null, string | null, LocalModule | null]>} ObjectSerializerContext */
19
19
 
20
20
  /** @type {Record<string, { definition: string, content: string, requests: string[] }>} */
21
21
  const DEFINITIONS = {
@@ -121,6 +121,7 @@ class AMDDefineDependency extends NullDependency {
121
121
  this.arrayRange = arrayRange;
122
122
  this.functionRange = functionRange;
123
123
  this.objectRange = objectRange;
124
+ /** @type {string | null} */
124
125
  this.namedModule = namedModule;
125
126
  /** @type {LocalModule | null} */
126
127
  this.localModule = null;
@@ -135,13 +136,13 @@ class AMDDefineDependency extends NullDependency {
135
136
  * @param {ObjectSerializerContext} context context
136
137
  */
137
138
  serialize(context) {
138
- const { write } = context;
139
- write(this.range);
140
- write(this.arrayRange);
141
- write(this.functionRange);
142
- write(this.objectRange);
143
- write(this.namedModule);
144
- write(this.localModule);
139
+ context
140
+ .write(this.range)
141
+ .write(this.arrayRange)
142
+ .write(this.functionRange)
143
+ .write(this.objectRange)
144
+ .write(this.namedModule)
145
+ .write(this.localModule);
145
146
  super.serialize(context);
146
147
  }
147
148
 
@@ -150,14 +151,18 @@ class AMDDefineDependency extends NullDependency {
150
151
  * @param {ObjectDeserializerContext} context context
151
152
  */
152
153
  deserialize(context) {
153
- const { read } = context;
154
- this.range = read();
155
- this.arrayRange = read();
156
- this.functionRange = read();
157
- this.objectRange = read();
158
- this.namedModule = read();
159
- this.localModule = read();
160
- super.deserialize(context);
154
+ this.range = context.read();
155
+ const c1 = context.rest;
156
+ this.arrayRange = c1.read();
157
+ const c2 = c1.rest;
158
+ this.functionRange = c2.read();
159
+ const c3 = c2.rest;
160
+ this.objectRange = c3.read();
161
+ const c4 = c3.rest;
162
+ this.namedModule = c4.read();
163
+ const c5 = c4.rest;
164
+ this.localModule = c5.read();
165
+ super.deserialize(c5.rest);
161
166
  }
162
167
  }
163
168
 
@@ -83,6 +83,7 @@ class AMDDefineDependencyParserPlugin {
83
83
  * @param {JavascriptParserOptions} options parserOptions
84
84
  */
85
85
  constructor(options) {
86
+ /** @type {JavascriptParserOptions} */
86
87
  this.options = options;
87
88
  }
88
89
 
@@ -14,9 +14,9 @@ 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 */
19
17
  /** @typedef {import("./AMDRequireItemDependency")} AMDRequireItemDependency */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[(string | LocalModuleDependency | AMDRequireItemDependency)[], Range]>} ObjectDeserializerContext */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[(string | LocalModuleDependency | AMDRequireItemDependency)[], Range]>} ObjectSerializerContext */
20
20
 
21
21
  class AMDRequireArrayDependency extends NullDependency {
22
22
  /**
@@ -44,10 +44,7 @@ class AMDRequireArrayDependency extends NullDependency {
44
44
  * @param {ObjectSerializerContext} context context
45
45
  */
46
46
  serialize(context) {
47
- const { write } = context;
48
-
49
- write(this.depsArray);
50
- write(this.range);
47
+ context.write(this.depsArray).write(this.range);
51
48
 
52
49
  super.serialize(context);
53
50
  }
@@ -57,12 +54,11 @@ class AMDRequireArrayDependency extends NullDependency {
57
54
  * @param {ObjectDeserializerContext} context context
58
55
  */
59
56
  deserialize(context) {
60
- const { read } = context;
61
-
62
- this.depsArray = read();
63
- this.range = read();
57
+ this.depsArray = context.read();
58
+ const c1 = context.rest;
59
+ this.range = c1.read();
64
60
 
65
- super.deserialize(context);
61
+ super.deserialize(c1.rest);
66
62
  }
67
63
  }
68
64
 
@@ -9,8 +9,8 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ContextDependency = require("./ContextDependency");
10
10
 
11
11
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
12
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
13
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
12
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range]>} ObjectDeserializerContext */
13
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range]>} ObjectSerializerContext */
14
14
  /** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
15
15
 
16
16
  class AMDRequireContextDependency extends ContextDependency {
@@ -40,10 +40,7 @@ class AMDRequireContextDependency extends ContextDependency {
40
40
  * @param {ObjectSerializerContext} context context
41
41
  */
42
42
  serialize(context) {
43
- const { write } = context;
44
-
45
- write(this.range);
46
- write(this.valueRange);
43
+ context.write(this.range).write(this.valueRange);
47
44
 
48
45
  super.serialize(context);
49
46
  }
@@ -53,12 +50,11 @@ class AMDRequireContextDependency extends ContextDependency {
53
50
  * @param {ObjectDeserializerContext} context context
54
51
  */
55
52
  deserialize(context) {
56
- const { read } = context;
57
-
58
- this.range = read();
59
- this.valueRange = read();
53
+ this.range = context.read();
54
+ const c1 = context.rest;
55
+ this.valueRange = c1.read();
60
56
 
61
- super.deserialize(context);
57
+ super.deserialize(c1.rest);
62
58
  }
63
59
  }
64
60
 
@@ -40,6 +40,7 @@ class AMDRequireDependenciesBlockParserPlugin {
40
40
  * @param {JavascriptParserOptions} options parserOptions
41
41
  */
42
42
  constructor(options) {
43
+ /** @type {JavascriptParserOptions} */
43
44
  this.options = options;
44
45
  }
45
46
 
@@ -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 | null, Range | null, boolean, boolean]>} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range, Range | null, Range | null, boolean, boolean]>} ObjectSerializerContext */
19
19
 
20
20
  class AMDRequireDependency extends NullDependency {
21
21
  /**
@@ -32,7 +32,9 @@ class AMDRequireDependency extends NullDependency {
32
32
  this.arrayRange = arrayRange;
33
33
  this.functionRange = functionRange;
34
34
  this.errorCallbackRange = errorCallbackRange;
35
+ /** @type {boolean} */
35
36
  this.functionBindThis = false;
37
+ /** @type {boolean} */
36
38
  this.errorCallbackBindThis = false;
37
39
  }
38
40
 
@@ -45,14 +47,13 @@ class AMDRequireDependency extends NullDependency {
45
47
  * @param {ObjectSerializerContext} context context
46
48
  */
47
49
  serialize(context) {
48
- const { write } = context;
49
-
50
- write(this.outerRange);
51
- write(this.arrayRange);
52
- write(this.functionRange);
53
- write(this.errorCallbackRange);
54
- write(this.functionBindThis);
55
- write(this.errorCallbackBindThis);
50
+ context
51
+ .write(this.outerRange)
52
+ .write(this.arrayRange)
53
+ .write(this.functionRange)
54
+ .write(this.errorCallbackRange)
55
+ .write(this.functionBindThis)
56
+ .write(this.errorCallbackBindThis);
56
57
 
57
58
  super.serialize(context);
58
59
  }
@@ -62,16 +63,19 @@ class AMDRequireDependency extends NullDependency {
62
63
  * @param {ObjectDeserializerContext} context context
63
64
  */
64
65
  deserialize(context) {
65
- const { read } = context;
66
-
67
- this.outerRange = read();
68
- this.arrayRange = read();
69
- this.functionRange = read();
70
- this.errorCallbackRange = read();
71
- this.functionBindThis = read();
72
- this.errorCallbackBindThis = read();
73
-
74
- super.deserialize(context);
66
+ this.outerRange = context.read();
67
+ const c1 = context.rest;
68
+ this.arrayRange = c1.read();
69
+ const c2 = c1.rest;
70
+ this.functionRange = c2.read();
71
+ const c3 = c2.rest;
72
+ this.errorCallbackRange = c3.read();
73
+ const c4 = c3.rest;
74
+ this.functionBindThis = c4.read();
75
+ const c5 = c4.rest;
76
+ this.errorCallbackBindThis = c5.read();
77
+
78
+ super.deserialize(c5.rest);
75
79
  }
76
80
  }
77
81
 
@@ -35,9 +35,12 @@ class CachedConstDependency extends NullDependency {
35
35
  ) {
36
36
  super();
37
37
 
38
+ /** @type {string} */
38
39
  this.expression = expression;
39
40
  this.range = range;
41
+ /** @type {string} */
40
42
  this.identifier = identifier;
43
+ /** @type {number} */
41
44
  this.place = place;
42
45
  /** @type {undefined | string} */
43
46
  this._hashUpdate = undefined;
@@ -63,6 +63,7 @@ const getRequireEsmModuleExportsAccess = (
63
63
  return null;
64
64
  }
65
65
  const exportsInfo = moduleGraph.getExportsInfo(importedModule);
66
+ // CJS exports are never inlined
66
67
  const usedName = exportsInfo.getUsedName([ESM_MODULE_EXPORTS_NAME], runtime);
67
68
  if (usedName === false) return null;
68
69
  return propertyAccess(/** @type {readonly string[]} */ (usedName));
@@ -32,10 +32,10 @@ const processExportInfo = require("./processExportInfo");
32
32
  /** @typedef {import("../Module")} Module */
33
33
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
34
34
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
35
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
36
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
37
35
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
38
36
  /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
37
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectDeserializerContext */
38
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectSerializerContext */
39
39
 
40
40
  const idsSymbol = /** @type {symbol} */ (
41
41
  Symbol("CommonJsExportRequireDependency.ids")
@@ -61,12 +61,20 @@ class CommonJsExportRequireDependency extends ModuleDependency {
61
61
  super(request);
62
62
  this.range = range;
63
63
  this.valueRange = valueRange;
64
+ /** @type {CommonJSDependencyBaseKeywords} */
64
65
  this.base = base;
66
+ /** @type {string[]} */
65
67
  this.names = names;
68
+ /** @type {string[]} */
66
69
  this.ids = ids;
70
+ /** @type {boolean} */
67
71
  this.resultUsed = resultUsed;
68
72
  /** @type {undefined | boolean} */
69
73
  this.asiSafe = undefined;
74
+ // true when the reexport is a lazy `{ get: () => require(...) }` accessor
75
+ // (as produced by `Object.defineProperty`) rather than an eager value.
76
+ /** @type {boolean} */
77
+ this.getter = false;
70
78
  }
71
79
 
72
80
  get type() {
@@ -120,7 +128,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
120
128
  // `require(esm)` unwraps the "module.exports" named export; any
121
129
  // further property access lands on that value (which webpack does
122
130
  // not model), so only the "module.exports" export is observable.
123
- return [[ESM_MODULE_EXPORTS_NAME]];
131
+ return [{ name: [ESM_MODULE_EXPORTS_NAME], canInline: false }];
124
132
  }
125
133
  const getFullResult = () => {
126
134
  if (ids.length === 0) {
@@ -129,7 +137,8 @@ class CommonJsExportRequireDependency extends ModuleDependency {
129
137
  return [
130
138
  {
131
139
  name: ids,
132
- canMangle: false
140
+ canMangle: false,
141
+ canInline: false
133
142
  }
134
143
  ];
135
144
  };
@@ -164,7 +173,8 @@ class CommonJsExportRequireDependency extends ModuleDependency {
164
173
  }
165
174
  return referencedExports.map((name) => ({
166
175
  name,
167
- canMangle: false
176
+ canMangle: false,
177
+ canInline: false
168
178
  }));
169
179
  }
170
180
 
@@ -248,7 +258,6 @@ class CommonJsExportRequireDependency extends ModuleDependency {
248
258
  canMangle: !(name in EMPTY_OBJECT) && false
249
259
  })
250
260
  ),
251
- // TODO handle deep reexports
252
261
  dependencies: [from.module]
253
262
  };
254
263
  }
@@ -352,14 +361,15 @@ class CommonJsExportRequireDependency extends ModuleDependency {
352
361
  * @param {ObjectSerializerContext} context context
353
362
  */
354
363
  serialize(context) {
355
- const { write } = context;
356
- write(this.asiSafe);
357
- write(this.range);
358
- write(this.valueRange);
359
- write(this.base);
360
- write(this.names);
361
- write(this.ids);
362
- write(this.resultUsed);
364
+ context
365
+ .write(this.asiSafe)
366
+ .write(this.range)
367
+ .write(this.valueRange)
368
+ .write(this.base)
369
+ .write(this.names)
370
+ .write(this.ids)
371
+ .write(this.resultUsed)
372
+ .write(this.getter);
363
373
  super.serialize(context);
364
374
  }
365
375
 
@@ -368,15 +378,22 @@ class CommonJsExportRequireDependency extends ModuleDependency {
368
378
  * @param {ObjectDeserializerContext} context context
369
379
  */
370
380
  deserialize(context) {
371
- const { read } = context;
372
- this.asiSafe = read();
373
- this.range = read();
374
- this.valueRange = read();
375
- this.base = read();
376
- this.names = read();
377
- this.ids = read();
378
- this.resultUsed = read();
379
- super.deserialize(context);
381
+ this.asiSafe = context.read();
382
+ const c1 = context.rest;
383
+ this.range = c1.read();
384
+ const c2 = c1.rest;
385
+ this.valueRange = c2.read();
386
+ const c3 = c2.rest;
387
+ this.base = c3.read();
388
+ const c4 = c3.rest;
389
+ this.names = c4.read();
390
+ const c5 = c4.rest;
391
+ this.ids = c5.read();
392
+ const c6 = c5.rest;
393
+ this.resultUsed = c6.read();
394
+ const c7 = c6.rest;
395
+ this.getter = c7.read();
396
+ super.deserialize(c7.rest);
380
397
  }
381
398
  }
382
399
 
@@ -408,9 +425,10 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
408
425
  }
409
426
  ) {
410
427
  const dep = /** @type {CommonJsExportRequireDependency} */ (dependency);
411
- const used = moduleGraph
412
- .getExportsInfo(module)
413
- .getUsedName(dep.names, runtime);
428
+ // CJS exports are never inlined
429
+ const used = /** @type {string | string[] | false} */ (
430
+ moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
431
+ );
414
432
 
415
433
  const [type, base] = handleDependencyBase(
416
434
  dep.base,
@@ -436,9 +454,10 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
436
454
  if (esmRequireAccess !== null) {
437
455
  requireExpr += `${esmRequireAccess}${propertyAccess(ids)}`;
438
456
  } else {
439
- const usedImported = moduleGraph
440
- .getExportsInfo(importedModule)
441
- .getUsedName(ids, runtime);
457
+ // CJS exports are never inlined
458
+ const usedImported = /** @type {string | string[] | false} */ (
459
+ moduleGraph.getExportsInfo(importedModule).getUsedName(ids, runtime)
460
+ );
442
461
  if (usedImported) {
443
462
  const comment = equals(usedImported, ids)
444
463
  ? ""
@@ -458,8 +477,37 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
458
477
  : `/* unused reexport */ ${requireExpr}`
459
478
  );
460
479
  return;
461
- case "Object.defineProperty":
462
- throw new Error("TODO");
480
+ case "Object.defineProperty": {
481
+ // `Object.defineProperty(exports, "name", { value: require("...") })`
482
+ // or the lazy getter form `{ get: () => require("...") }` used by
483
+ // barrel files (e.g. webpack's own `lib/index.js`).
484
+ const valueRange = /** @type {Range} */ (dep.valueRange);
485
+ if (!used) {
486
+ // A lazy getter never runs `require` until accessed, so an unused
487
+ // one can be dropped entirely; an eager value must keep side effects.
488
+ source.replace(
489
+ dep.range[0],
490
+ dep.range[1] - 1,
491
+ dep.getter
492
+ ? "/* unused reexport */ 0"
493
+ : `/* unused reexport */ ${requireExpr}`
494
+ );
495
+ return;
496
+ }
497
+ const descriptor = dep.getter
498
+ ? "enumerable: true, get: () => ("
499
+ : "value: (";
500
+ source.replace(
501
+ dep.range[0],
502
+ valueRange[0] - 1,
503
+ `Object.defineProperty(${base}${propertyAccess(
504
+ used.slice(0, -1)
505
+ )}, ${JSON.stringify(used[used.length - 1])}, { ${descriptor}`
506
+ );
507
+ source.replace(valueRange[0], valueRange[1] - 1, requireExpr);
508
+ source.replace(valueRange[1], dep.range[1] - 1, ") })");
509
+ return;
510
+ }
463
511
  default:
464
512
  throw new Error("Unexpected type");
465
513
  }
@@ -18,9 +18,9 @@ const NullDependency = require("./NullDependency");
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
19
  /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
20
20
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
23
21
  /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
22
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectDeserializerContext */
23
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectSerializerContext */
24
24
 
25
25
  const EMPTY_OBJECT = {};
26
26
 
@@ -36,7 +36,9 @@ class CommonJsExportsDependency extends NullDependency {
36
36
  super();
37
37
  this.range = range;
38
38
  this.valueRange = valueRange;
39
+ /** @type {CommonJSDependencyBaseKeywords} */
39
40
  this.base = base;
41
+ /** @type {string[]} */
40
42
  this.names = names;
41
43
  }
42
44
 
@@ -70,11 +72,11 @@ class CommonJsExportsDependency extends NullDependency {
70
72
  * @param {ObjectSerializerContext} context context
71
73
  */
72
74
  serialize(context) {
73
- const { write } = context;
74
- write(this.range);
75
- write(this.valueRange);
76
- write(this.base);
77
- write(this.names);
75
+ context
76
+ .write(this.range)
77
+ .write(this.valueRange)
78
+ .write(this.base)
79
+ .write(this.names);
78
80
  super.serialize(context);
79
81
  }
80
82
 
@@ -83,12 +85,14 @@ class CommonJsExportsDependency extends NullDependency {
83
85
  * @param {ObjectDeserializerContext} context context
84
86
  */
85
87
  deserialize(context) {
86
- const { read } = context;
87
- this.range = read();
88
- this.valueRange = read();
89
- this.base = read();
90
- this.names = read();
91
- super.deserialize(context);
88
+ this.range = context.read();
89
+ const c1 = context.rest;
90
+ this.valueRange = c1.read();
91
+ const c2 = c1.rest;
92
+ this.base = c2.read();
93
+ const c3 = c2.rest;
94
+ this.names = c3.read();
95
+ super.deserialize(c3.rest);
92
96
  }
93
97
  }
94
98
 
@@ -113,9 +117,10 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
113
117
  { module, moduleGraph, initFragments, runtimeRequirements, runtime }
114
118
  ) {
115
119
  const dep = /** @type {CommonJsExportsDependency} */ (dependency);
116
- const used = moduleGraph
117
- .getExportsInfo(module)
118
- .getUsedName(dep.names, runtime);
120
+ // CJS exports are never inlined
121
+ const used = /** @type {string | string[] | false} */ (
122
+ moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
123
+ );
119
124
 
120
125
  const [type, base] = handleDependencyBase(
121
126
  dep.base,