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,6 +7,7 @@
7
7
 
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
+ const memoize = require("../util/memoize");
10
11
  const {
11
12
  ESM_MODULE_EXPORTS_NAME,
12
13
  getRequireEsmModuleExportsAccess,
@@ -15,15 +16,19 @@ const {
15
16
  const ModuleDependency = require("./ModuleDependency");
16
17
 
17
18
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
19
+ /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
18
20
  /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
19
21
  /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
20
22
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
21
23
  /** @typedef {import("../Module")} Module */
22
24
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
23
25
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
24
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
25
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
26
26
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
27
+ /** @typedef {import("./HarmonyImportGuard").DependencyGuard} DependencyGuard */
28
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[RawReferencedExports | null, Range | undefined, DependencyGuard[] | undefined]>} ObjectDeserializerContext */
29
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[RawReferencedExports | null, Range | undefined, DependencyGuard[] | undefined]>} ObjectSerializerContext */
30
+
31
+ const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
27
32
 
28
33
  class CommonJsRequireDependency extends ModuleDependency {
29
34
  /**
@@ -43,9 +48,13 @@ class CommonJsRequireDependency extends ModuleDependency {
43
48
  ) {
44
49
  super(request);
45
50
  this.range = range;
51
+ /** @type {string | undefined} */
46
52
  this._context = context;
53
+ /** @type {RawReferencedExports | null} */
47
54
  this.referencedExports = referencedExports;
48
55
  this.valueRange = valueRange;
56
+ /** @type {DependencyGuard[] | undefined} */
57
+ this.branchGuards = undefined;
49
58
  }
50
59
 
51
60
  get type() {
@@ -56,6 +65,18 @@ class CommonJsRequireDependency extends ModuleDependency {
56
65
  return "commonjs";
57
66
  }
58
67
 
68
+ /**
69
+ * Returns function to determine if the connection is active.
70
+ * @param {ModuleGraph} moduleGraph module graph
71
+ * @returns {null | false | GetConditionFn} function to determine if the connection is active
72
+ */
73
+ getCondition(moduleGraph) {
74
+ const guards = this.branchGuards;
75
+ if (guards === undefined) return null;
76
+ return (connection, runtime) =>
77
+ !getHarmonyImportGuard().isDeadByGuards(guards, moduleGraph, runtime);
78
+ }
79
+
59
80
  /**
60
81
  * Returns list of exports referenced by this dependency
61
82
  * @param {ModuleGraph} moduleGraph module graph
@@ -70,12 +91,13 @@ class CommonJsRequireDependency extends ModuleDependency {
70
91
  ) {
71
92
  // `require(esm)` will unwrap the "module.exports" named export; only
72
93
  // that export is observable through this `require()` call.
73
- return [[ESM_MODULE_EXPORTS_NAME]];
94
+ return [{ name: [ESM_MODULE_EXPORTS_NAME], canInline: false }];
74
95
  }
75
96
  if (!this.referencedExports) return Dependency.EXPORTS_OBJECT_REFERENCED;
76
97
  return this.referencedExports.map((name) => ({
77
98
  name,
78
- canMangle: false
99
+ canMangle: false,
100
+ canInline: false
79
101
  }));
80
102
  }
81
103
 
@@ -84,9 +106,10 @@ class CommonJsRequireDependency extends ModuleDependency {
84
106
  * @param {ObjectSerializerContext} context context
85
107
  */
86
108
  serialize(context) {
87
- const { write } = context;
88
- write(this.referencedExports);
89
- write(this.valueRange);
109
+ context
110
+ .write(this.referencedExports)
111
+ .write(this.valueRange)
112
+ .write(this.branchGuards);
90
113
  super.serialize(context);
91
114
  }
92
115
 
@@ -95,10 +118,12 @@ class CommonJsRequireDependency extends ModuleDependency {
95
118
  * @param {ObjectDeserializerContext} context context
96
119
  */
97
120
  deserialize(context) {
98
- const { read } = context;
99
- this.referencedExports = read();
100
- this.valueRange = read();
101
- super.deserialize(context);
121
+ this.referencedExports = context.read();
122
+ const c1 = context.rest;
123
+ this.valueRange = c1.read();
124
+ const c2 = c1.rest;
125
+ this.branchGuards = c2.read();
126
+ super.deserialize(c2.rest);
102
127
  }
103
128
  }
104
129
 
@@ -119,6 +144,12 @@ CommonJsRequireDependency.Template = class CommonJsRequireDependencyTemplate ext
119
144
  ) {
120
145
  const dep = /** @type {CommonJsRequireDependency} */ (dependency);
121
146
  if (!dep.range) return;
147
+ const connection = moduleGraph.getConnection(dep);
148
+ // Dead branch: module is excluded and has no id; code is never executed.
149
+ if (connection && !connection.isTargetActive(runtime)) {
150
+ source.replace(dep.range[0], dep.range[1] - 1, "null /* dead branch */");
151
+ return;
152
+ }
122
153
  const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
123
154
  const content = runtimeTemplate.moduleId({
124
155
  module: importedModule,
@@ -18,10 +18,10 @@ 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("../util/runtime").RuntimeSpec} RuntimeSpec */
24
22
  /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
23
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, CommonJSDependencyBaseKeywords, ExportInfoName[], boolean]>} ObjectDeserializerContext */
24
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, CommonJSDependencyBaseKeywords, ExportInfoName[], boolean]>} ObjectSerializerContext */
25
25
 
26
26
  class CommonJsSelfReferenceDependency extends NullDependency {
27
27
  /**
@@ -34,8 +34,11 @@ class CommonJsSelfReferenceDependency extends NullDependency {
34
34
  constructor(range, base, names, call) {
35
35
  super();
36
36
  this.range = range;
37
+ /** @type {CommonJSDependencyBaseKeywords} */
37
38
  this.base = base;
39
+ /** @type {string[]} */
38
40
  this.names = names;
41
+ /** @type {boolean} */
39
42
  this.call = call;
40
43
  }
41
44
 
@@ -70,11 +73,11 @@ class CommonJsSelfReferenceDependency extends NullDependency {
70
73
  * @param {ObjectSerializerContext} context context
71
74
  */
72
75
  serialize(context) {
73
- const { write } = context;
74
- write(this.range);
75
- write(this.base);
76
- write(this.names);
77
- write(this.call);
76
+ context
77
+ .write(this.range)
78
+ .write(this.base)
79
+ .write(this.names)
80
+ .write(this.call);
78
81
  super.serialize(context);
79
82
  }
80
83
 
@@ -83,12 +86,14 @@ class CommonJsSelfReferenceDependency extends NullDependency {
83
86
  * @param {ObjectDeserializerContext} context context
84
87
  */
85
88
  deserialize(context) {
86
- const { read } = context;
87
- this.range = read();
88
- this.base = read();
89
- this.names = read();
90
- this.call = read();
91
- super.deserialize(context);
89
+ this.range = context.read();
90
+ const c1 = context.rest;
91
+ this.base = c1.read();
92
+ const c2 = c1.rest;
93
+ this.names = c2.read();
94
+ const c3 = c2.rest;
95
+ this.call = c3.read();
96
+ super.deserialize(c3.rest);
92
97
  }
93
98
  }
94
99
 
@@ -113,10 +118,13 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
113
118
  { module, moduleGraph, runtime, runtimeRequirements }
114
119
  ) {
115
120
  const dep = /** @type {CommonJsSelfReferenceDependency} */ (dependency);
121
+ // CJS exports are never inlined
116
122
  const used =
117
123
  dep.names.length === 0
118
124
  ? dep.names
119
- : moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime);
125
+ : /** @type {string | string[] | false} */ (
126
+ moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
127
+ );
120
128
  if (!used) {
121
129
  throw new Error(
122
130
  "Self-reference dependency has unused export name: This should not happen"
@@ -16,8 +16,8 @@ const NullDependency = require("./NullDependency");
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
17
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
18
18
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
20
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, number | Range, Set<string> | null]>} ObjectDeserializerContext */
20
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, number | Range, Set<string> | null]>} ObjectSerializerContext */
21
21
  /** @typedef {import("../util/Hash")} Hash */
22
22
 
23
23
  class ConstDependency extends NullDependency {
@@ -29,8 +29,10 @@ class ConstDependency extends NullDependency {
29
29
  */
30
30
  constructor(expression, range, runtimeRequirements) {
31
31
  super();
32
+ /** @type {string} */
32
33
  this.expression = expression;
33
34
  this.range = range;
35
+ /** @type {Set<string> | null} */
34
36
  this.runtimeRequirements = runtimeRequirements
35
37
  ? new Set(runtimeRequirements)
36
38
  : null;
@@ -72,10 +74,11 @@ class ConstDependency extends NullDependency {
72
74
  * @param {ObjectSerializerContext} context context
73
75
  */
74
76
  serialize(context) {
75
- const { write } = context;
76
- write(this.expression);
77
- write(this.range);
78
- write(this.runtimeRequirements);
77
+ // chain writes so each position is type-checked against the tuple
78
+ context
79
+ .write(this.expression)
80
+ .write(this.range)
81
+ .write(this.runtimeRequirements);
79
82
  super.serialize(context);
80
83
  }
81
84
 
@@ -84,11 +87,13 @@ class ConstDependency extends NullDependency {
84
87
  * @param {ObjectDeserializerContext} context context
85
88
  */
86
89
  deserialize(context) {
87
- const { read } = context;
88
- this.expression = read();
89
- this.range = read();
90
- this.runtimeRequirements = read();
91
- super.deserialize(context);
90
+ // advance the cursor via `rest` so each read is type-checked by position
91
+ this.expression = context.read();
92
+ const c1 = context.rest;
93
+ this.range = c1.read();
94
+ const c2 = c1.rest;
95
+ this.runtimeRequirements = c2.read();
96
+ super.deserialize(c2.rest);
92
97
  }
93
98
  }
94
99
 
@@ -42,10 +42,13 @@ class ContextDependency extends Dependency {
42
42
  constructor(options, context) {
43
43
  super();
44
44
 
45
+ /** @type {ContextDependencyOptions} */
45
46
  this.options = options;
47
+ /** @type {string} */
46
48
  this.userRequest = this.options && this.options.request;
47
49
  /** @type {false | undefined | string} */
48
50
  this.critical = false;
51
+ /** @type {boolean} */
49
52
  this.hadGlobalOrStickyRegExp = false;
50
53
 
51
54
  if (
@@ -67,6 +70,7 @@ class ContextDependency extends Dependency {
67
70
  this.inShorthand = undefined;
68
71
  /** @type {Replaces | undefined} */
69
72
  this.replaces = undefined;
73
+ /** @type {string | undefined} */
70
74
  this._requestContext = context;
71
75
  }
72
76
 
@@ -31,7 +31,7 @@ class ContextDependencyTemplateAsId extends ContextDependency.Template {
31
31
  module,
32
32
  chunkGraph,
33
33
  request: /** @type {string} */ (dep.request),
34
- weak: dep.weak,
34
+ weak: /** @type {{ weak?: boolean }} */ (dep).weak,
35
35
  runtimeRequirements
36
36
  });
37
37
 
@@ -15,9 +15,9 @@ const ModuleDependency = require("./ModuleDependency");
15
15
  /** @typedef {import("../Module")} Module */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
17
  /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
18
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined]>} ObjectDeserializerContext */
20
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined]>} ObjectSerializerContext */
21
21
 
22
22
  class ContextElementDependency extends ModuleDependency {
23
23
  /**
@@ -42,13 +42,19 @@ class ContextElementDependency extends ModuleDependency {
42
42
  super(request);
43
43
 
44
44
  if (userRequest) {
45
+ /** @type {string} */
45
46
  this.userRequest = userRequest;
46
47
  }
47
48
 
49
+ /** @type {string | undefined} */
48
50
  this._typePrefix = typePrefix;
51
+ /** @type {string} */
49
52
  this._category = category;
53
+ /** @type {RawReferencedExports | null | undefined} */
50
54
  this.referencedExports = referencedExports;
55
+ /** @type {string | undefined} */
51
56
  this._context = context || undefined;
57
+ /** @type {ImportAttributes | undefined} */
52
58
  this.attributes = attributes;
53
59
  }
54
60
 
@@ -110,7 +116,8 @@ class ContextElementDependency extends ModuleDependency {
110
116
  }
111
117
  refs.push({
112
118
  name: referencedExport,
113
- canMangle: false
119
+ canMangle: false,
120
+ canInline: false
114
121
  });
115
122
  }
116
123
  return refs;
@@ -121,11 +128,11 @@ class ContextElementDependency extends ModuleDependency {
121
128
  * @param {ObjectSerializerContext} context context
122
129
  */
123
130
  serialize(context) {
124
- const { write } = context;
125
- write(this._typePrefix);
126
- write(this._category);
127
- write(this.referencedExports);
128
- write(this.attributes);
131
+ context
132
+ .write(this._typePrefix)
133
+ .write(this._category)
134
+ .write(this.referencedExports)
135
+ .write(this.attributes);
129
136
  super.serialize(context);
130
137
  }
131
138
 
@@ -134,12 +141,14 @@ class ContextElementDependency extends ModuleDependency {
134
141
  * @param {ObjectDeserializerContext} context context
135
142
  */
136
143
  deserialize(context) {
137
- const { read } = context;
138
- this._typePrefix = read();
139
- this._category = read();
140
- this.referencedExports = read();
141
- this.attributes = read();
142
- super.deserialize(context);
144
+ this._typePrefix = context.read();
145
+ const c1 = context.rest;
146
+ this._category = c1.read();
147
+ const c2 = c1.rest;
148
+ this.referencedExports = c2.read();
149
+ const c3 = c2.rest;
150
+ this.attributes = c3.read();
151
+ super.deserialize(c3.rest);
143
152
  }
144
153
  }
145
154
 
@@ -50,6 +50,7 @@ class CreateRequireParserPlugin {
50
50
  * @param {JavascriptParserOptions} options parser options
51
51
  */
52
52
  constructor(options) {
53
+ /** @type {JavascriptParserOptions} */
53
54
  this.options = options;
54
55
  }
55
56
 
@@ -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 CreateScriptUrlDependency extends NullDependency {
20
20
  /**
@@ -35,8 +35,7 @@ class CreateScriptUrlDependency extends NullDependency {
35
35
  * @param {ObjectSerializerContext} context context
36
36
  */
37
37
  serialize(context) {
38
- const { write } = context;
39
- write(this.range);
38
+ context.write(this.range);
40
39
  super.serialize(context);
41
40
  }
42
41
 
@@ -45,9 +44,8 @@ class CreateScriptUrlDependency extends NullDependency {
45
44
  * @param {ObjectDeserializerContext} context context
46
45
  */
47
46
  deserialize(context) {
48
- const { read } = context;
49
- this.range = read();
50
- super.deserialize(context);
47
+ this.range = context.read();
48
+ super.deserialize(context.rest);
51
49
  }
52
50
  }
53
51
 
@@ -18,6 +18,7 @@ class CriticalDependencyWarning extends WebpackError {
18
18
 
19
19
  /** @type {string} */
20
20
  this.name = "CriticalDependencyWarning";
21
+ /** @type {string} */
21
22
  this.message = `Critical dependency: ${message}`;
22
23
  }
23
24
  }