webpack 5.107.2 → 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 (357) 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 +25 -11
  10. package/lib/ConcatenationScope.js +10 -3
  11. package/lib/ContextExclusionPlugin.js +1 -0
  12. package/lib/ContextModule.js +92 -47
  13. package/lib/ContextReplacementPlugin.js +4 -0
  14. package/lib/DefinePlugin.js +89 -15
  15. package/lib/Dependency.js +111 -7
  16. package/lib/EntryOptionPlugin.js +39 -2
  17. package/lib/EntryPlugin.js +2 -0
  18. package/lib/ExportsInfo.js +314 -73
  19. package/lib/ExternalModule.js +82 -34
  20. package/lib/ExternalModuleFactoryPlugin.js +1 -0
  21. package/lib/ExternalsPlugin.js +1 -0
  22. package/lib/FileSystemInfo.js +173 -23
  23. package/lib/FlagAllModulesAsUsedPlugin.js +1 -5
  24. package/lib/FlagDependencyExportsPlugin.js +23 -0
  25. package/lib/FlagDependencyUsagePlugin.js +87 -5
  26. package/lib/FlagEntryExportAsUsedPlugin.js +2 -0
  27. package/lib/Generator.js +8 -0
  28. package/lib/HotModuleReplacementPlugin.js +65 -28
  29. package/lib/IgnorePlugin.js +1 -0
  30. package/lib/InitFragment.js +5 -0
  31. package/lib/JavascriptMetaInfoPlugin.js +7 -5
  32. package/lib/LazyBarrel.js +361 -0
  33. package/lib/LoaderTargetPlugin.js +1 -0
  34. package/lib/Module.js +21 -42
  35. package/lib/ModuleGraph.js +3 -2
  36. package/lib/ModuleProfile.js +27 -1
  37. package/lib/ModuleTemplate.js +2 -0
  38. package/lib/MultiCompiler.js +2 -0
  39. package/lib/MultiStats.js +1 -0
  40. package/lib/MultiWatching.js +2 -0
  41. package/lib/NodeStuffPlugin.js +22 -17
  42. package/lib/NormalModule.js +142 -80
  43. package/lib/NormalModuleReplacementPlugin.js +2 -0
  44. package/lib/PrefetchPlugin.js +2 -0
  45. package/lib/ProgressPlugin.js +8 -0
  46. package/lib/ProvidePlugin.js +1 -0
  47. package/lib/RawModule.js +20 -16
  48. package/lib/RecordIdsPlugin.js +1 -0
  49. package/lib/RuntimeGlobals.js +5 -0
  50. package/lib/RuntimePlugin.js +58 -26
  51. package/lib/RuntimeTemplate.js +278 -21
  52. package/lib/SelfModuleFactory.js +1 -0
  53. package/lib/SourceMapDevToolPlugin.js +3 -5
  54. package/lib/Stats.js +1 -0
  55. package/lib/Template.js +8 -2
  56. package/lib/TemplatedPathPlugin.js +473 -131
  57. package/lib/WarnCaseSensitiveModulesPlugin.js +1 -0
  58. package/lib/WarnDeprecatedOptionPlugin.js +4 -0
  59. package/lib/WarnNoModeSetPlugin.js +1 -0
  60. package/lib/WatchIgnorePlugin.js +1 -0
  61. package/lib/Watching.js +9 -0
  62. package/lib/WebpackOptionsApply.js +50 -5
  63. package/lib/asset/AssetBytesGenerator.js +11 -3
  64. package/lib/asset/AssetGenerator.js +47 -22
  65. package/lib/asset/AssetModule.js +47 -0
  66. package/lib/asset/AssetModulesPlugin.js +14 -14
  67. package/lib/asset/AssetParser.js +2 -2
  68. package/lib/asset/AssetSourceGenerator.js +8 -0
  69. package/lib/asset/RawDataUrlModule.js +12 -13
  70. package/lib/buildChunkGraph.js +64 -7
  71. package/lib/bun/BunTargetPlugin.js +48 -0
  72. package/lib/cache/AddBuildDependenciesPlugin.js +1 -0
  73. package/lib/cache/AddManagedPathsPlugin.js +3 -0
  74. package/lib/cache/IdleFileCachePlugin.js +4 -0
  75. package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
  76. package/lib/cache/PackFileCacheStrategy.js +1 -0
  77. package/lib/cache/ResolverCachePlugin.js +2 -0
  78. package/lib/cache/mergeEtags.js +2 -0
  79. package/lib/cli.js +109 -19
  80. package/lib/config/browserslistTargetHandler.js +99 -0
  81. package/lib/config/defaults.js +147 -7
  82. package/lib/config/defineConfig.js +31 -0
  83. package/lib/config/normalization.js +5 -0
  84. package/lib/config/target.js +181 -2
  85. package/lib/container/ContainerEntryModule.js +15 -14
  86. package/lib/container/ContainerExposedDependency.js +2 -2
  87. package/lib/container/ContainerReferencePlugin.js +1 -1
  88. package/lib/container/FallbackDependency.js +5 -7
  89. package/lib/container/FallbackModule.js +10 -9
  90. package/lib/container/RemoteModule.js +20 -10
  91. package/lib/container/RemoteRuntimeModule.js +14 -12
  92. package/lib/css/CssGenerator.js +353 -327
  93. package/lib/css/CssInjectStyleRuntimeModule.js +36 -8
  94. package/lib/css/CssLoadingRuntimeModule.js +118 -47
  95. package/lib/css/CssModule.js +52 -23
  96. package/lib/css/CssModulesPlugin.js +107 -124
  97. package/lib/css/CssParser.js +2759 -2205
  98. package/lib/css/syntax.js +2859 -0
  99. package/lib/debug/ProfilingPlugin.js +2 -0
  100. package/lib/deno/DenoTargetPlugin.js +47 -0
  101. package/lib/dependencies/AMDDefineDependency.js +22 -17
  102. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +1 -0
  103. package/lib/dependencies/AMDRequireArrayDependency.js +7 -11
  104. package/lib/dependencies/AMDRequireContextDependency.js +7 -11
  105. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -0
  106. package/lib/dependencies/AMDRequireDependency.js +24 -20
  107. package/lib/dependencies/CachedConstDependency.js +3 -0
  108. package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
  109. package/lib/dependencies/CommonJsExportRequireDependency.js +79 -31
  110. package/lib/dependencies/CommonJsExportsDependency.js +21 -16
  111. package/lib/dependencies/CommonJsExportsParserPlugin.js +230 -7
  112. package/lib/dependencies/CommonJsFullRequireDependency.js +27 -19
  113. package/lib/dependencies/CommonJsImportsParserPlugin.js +51 -16
  114. package/lib/dependencies/CommonJsPlugin.js +1 -1
  115. package/lib/dependencies/CommonJsRequireContextDependency.js +10 -13
  116. package/lib/dependencies/CommonJsRequireDependency.js +42 -11
  117. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -14
  118. package/lib/dependencies/ConstDependency.js +16 -11
  119. package/lib/dependencies/ContextDependency.js +4 -0
  120. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -1
  121. package/lib/dependencies/ContextElementDependency.js +23 -14
  122. package/lib/dependencies/CreateRequireParserPlugin.js +1 -0
  123. package/lib/dependencies/CreateScriptUrlDependency.js +5 -7
  124. package/lib/dependencies/CriticalDependencyWarning.js +1 -0
  125. package/lib/dependencies/CssIcssExportDependency.js +512 -574
  126. package/lib/dependencies/CssIcssImportDependency.js +9 -9
  127. package/lib/dependencies/CssIcssSymbolDependency.js +22 -15
  128. package/lib/dependencies/CssImportDependency.js +25 -1
  129. package/lib/dependencies/CssUrlDependency.js +23 -14
  130. package/lib/dependencies/DllEntryDependency.js +9 -13
  131. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  132. package/lib/dependencies/ExportsInfoDependency.js +12 -12
  133. package/lib/dependencies/ExternalModuleDependency.js +8 -5
  134. package/lib/dependencies/ExternalModuleInitFragment.js +7 -5
  135. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +13 -10
  136. package/lib/dependencies/HarmonyAcceptDependency.js +11 -11
  137. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  138. package/lib/dependencies/HarmonyDetectionParserPlugin.js +47 -22
  139. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +28 -2
  140. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +46 -22
  141. package/lib/dependencies/HarmonyExportExpressionDependency.js +107 -30
  142. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -9
  143. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +109 -31
  144. package/lib/dependencies/HarmonyExportInitFragment.js +18 -15
  145. package/lib/dependencies/HarmonyExportSpecifierDependency.js +83 -18
  146. package/lib/dependencies/HarmonyExports.js +4 -1
  147. package/lib/dependencies/HarmonyImportDependency.js +24 -0
  148. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +110 -74
  149. package/lib/dependencies/HarmonyImportGuard.js +254 -0
  150. package/lib/dependencies/HarmonyImportSideEffectDependency.js +18 -1
  151. package/lib/dependencies/HarmonyImportSpecifierDependency.js +118 -14
  152. package/lib/dependencies/HarmonyLinkingError.js +1 -0
  153. package/lib/dependencies/HarmonyModulesPlugin.js +1 -0
  154. package/lib/dependencies/{HtmlScriptSrcDependency.js → HtmlEntryDependency.js} +261 -109
  155. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  156. package/lib/dependencies/HtmlInlineScriptDependency.js +17 -13
  157. package/lib/dependencies/HtmlInlineStyleDependency.js +45 -11
  158. package/lib/dependencies/ImportContextDependency.js +5 -9
  159. package/lib/dependencies/ImportDependency.js +44 -2
  160. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  161. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  162. package/lib/dependencies/ImportMetaPlugin.js +74 -30
  163. package/lib/dependencies/ImportParserPlugin.js +19 -0
  164. package/lib/dependencies/ImportWeakDependency.js +1 -0
  165. package/lib/dependencies/JsonExportsDependency.js +9 -9
  166. package/lib/dependencies/LoaderImportDependency.js +1 -0
  167. package/lib/dependencies/LocalModule.js +11 -12
  168. package/lib/dependencies/LocalModuleDependency.js +11 -13
  169. package/lib/dependencies/ModuleDecoratorDependency.js +9 -9
  170. package/lib/dependencies/ModuleDependency.js +7 -0
  171. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  172. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  173. package/lib/dependencies/ModuleInitFragmentDependency.js +15 -11
  174. package/lib/dependencies/ProvidedDependency.js +31 -27
  175. package/lib/dependencies/PureExpressionDependency.js +7 -9
  176. package/lib/dependencies/RequireEnsureDependency.js +12 -13
  177. package/lib/dependencies/RequireHeaderDependency.js +3 -4
  178. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  179. package/lib/dependencies/RequireResolveContextDependency.js +7 -11
  180. package/lib/dependencies/RequireResolveDependency.js +1 -0
  181. package/lib/dependencies/RequireResolveHeaderDependency.js +3 -5
  182. package/lib/dependencies/RuntimeRequirementsDependency.js +6 -7
  183. package/lib/dependencies/StaticExportsDependency.js +10 -10
  184. package/lib/dependencies/SystemPlugin.js +2 -0
  185. package/lib/dependencies/URLContextDependency.js +5 -7
  186. package/lib/dependencies/URLDependency.js +14 -16
  187. package/lib/dependencies/UnsupportedDependency.js +8 -13
  188. package/lib/dependencies/WebAssemblyExportImportedDependency.js +11 -16
  189. package/lib/dependencies/WebAssemblyImportDependency.js +14 -16
  190. package/lib/dependencies/WebpackIsIncludedDependency.js +1 -0
  191. package/lib/dependencies/WorkerDependency.js +19 -8
  192. package/lib/dependencies/WorkerPlugin.js +22 -6
  193. package/lib/dependencies/processExportInfo.js +13 -11
  194. package/lib/dll/DelegatedModule.js +29 -15
  195. package/lib/dll/DelegatedModuleFactoryPlugin.js +1 -0
  196. package/lib/dll/DelegatedPlugin.js +1 -0
  197. package/lib/dll/DllEntryPlugin.js +3 -0
  198. package/lib/dll/DllModule.js +3 -2
  199. package/lib/dll/DllPlugin.js +16 -0
  200. package/lib/dll/DllReferencePlugin.js +3 -0
  201. package/lib/dll/LibManifestPlugin.js +1 -0
  202. package/lib/electron/ElectronTargetPlugin.js +22 -4
  203. package/lib/errors/ConcurrentCompilationError.js +1 -0
  204. package/lib/errors/HookWebpackError.js +11 -13
  205. package/lib/errors/IgnoreErrorModuleFactory.js +1 -0
  206. package/lib/errors/InvalidDependenciesModuleWarning.js +2 -0
  207. package/lib/errors/JSONParseError.js +9 -8
  208. package/lib/errors/ModuleBuildError.js +16 -13
  209. package/lib/errors/ModuleDependencyError.js +8 -1
  210. package/lib/errors/ModuleDependencyWarning.js +8 -1
  211. package/lib/errors/ModuleError.js +5 -11
  212. package/lib/errors/ModuleHashingError.js +4 -0
  213. package/lib/errors/ModuleNotFoundError.js +3 -0
  214. package/lib/errors/ModuleParseError.js +5 -11
  215. package/lib/errors/ModuleRestoreError.js +2 -0
  216. package/lib/errors/ModuleStoreError.js +3 -0
  217. package/lib/errors/ModuleWarning.js +7 -11
  218. package/lib/errors/NodeStuffInWebError.js +1 -0
  219. package/lib/errors/NonErrorEmittedError.js +2 -0
  220. package/lib/errors/UnhandledSchemeError.js +1 -0
  221. package/lib/esm/ModuleChunkLoadingPlugin.js +0 -1
  222. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +28 -23
  223. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  224. package/lib/hmr/HotModuleReplacementRuntimeModule.js +7 -0
  225. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  226. package/lib/hmr/LazyCompilationPlugin.js +30 -6
  227. package/lib/html/HtmlGenerator.js +217 -23
  228. package/lib/html/HtmlModule.js +40 -0
  229. package/lib/html/HtmlModulesPlugin.js +219 -55
  230. package/lib/html/HtmlParser.js +1108 -1099
  231. package/lib/html/{walkHtmlTokens.js → syntax.js} +4701 -212
  232. package/lib/ids/IdHelpers.js +4 -2
  233. package/lib/index.js +19 -0
  234. package/lib/javascript/BasicEvaluatedExpression.js +1 -0
  235. package/lib/javascript/EnableChunkLoadingPlugin.js +1 -0
  236. package/lib/javascript/JavascriptGenerator.js +6 -2
  237. package/lib/javascript/JavascriptModule.js +54 -0
  238. package/lib/javascript/JavascriptModulesPlugin.js +257 -102
  239. package/lib/javascript/JavascriptParser.js +285 -158
  240. package/lib/json/JsonModule.js +40 -0
  241. package/lib/json/JsonModulesPlugin.js +7 -0
  242. package/lib/json/JsonParser.js +4 -2
  243. package/lib/library/AssignLibraryPlugin.js +5 -3
  244. package/lib/library/ExportPropertyLibraryPlugin.js +1 -0
  245. package/lib/library/FalseIIFEUmdWarning.js +1 -0
  246. package/lib/library/ModuleLibraryPlugin.js +24 -5
  247. package/lib/library/SystemLibraryPlugin.js +3 -3
  248. package/lib/node/NodeTargetPlugin.js +1 -0
  249. package/lib/node/NodeWatchFileSystem.js +1 -0
  250. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
  251. package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
  252. package/lib/optimize/ConcatenatedModule.js +395 -77
  253. package/lib/optimize/ConstExportsPlugin.js +211 -0
  254. package/lib/optimize/InlineExports.js +178 -0
  255. package/lib/optimize/InnerGraph.js +372 -275
  256. package/lib/optimize/InnerGraphPlugin.js +196 -99
  257. package/lib/optimize/ModuleConcatenationPlugin.js +56 -25
  258. package/lib/optimize/RealContentHashPlugin.js +14 -1
  259. package/lib/optimize/SideEffectsFlagPlugin.js +234 -64
  260. package/lib/runtime/AsyncModuleRuntimeModule.js +32 -30
  261. package/lib/runtime/AutoPublicPathRuntimeModule.js +11 -5
  262. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
  263. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +6 -4
  264. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +33 -4
  265. package/lib/runtime/GetChunkFilenameRuntimeModule.js +82 -3
  266. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  267. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
  268. package/lib/runtime/LoadScriptRuntimeModule.js +18 -13
  269. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +39 -26
  270. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
  271. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  272. package/lib/runtime/RelativeUrlRuntimeModule.js +3 -2
  273. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
  274. package/lib/runtime/StartupEntrypointRuntimeModule.js +4 -3
  275. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  276. package/lib/schemes/HttpUriPlugin.js +3 -2
  277. package/lib/serialization/AggregateErrorSerializer.js +7 -6
  278. package/lib/serialization/ArraySerializer.js +4 -8
  279. package/lib/serialization/BinaryMiddleware.js +538 -468
  280. package/lib/serialization/DateObjectSerializer.js +2 -2
  281. package/lib/serialization/ErrorObjectSerializer.js +7 -6
  282. package/lib/serialization/MapObjectSerializer.js +5 -9
  283. package/lib/serialization/NullPrototypeObjectSerializer.js +7 -9
  284. package/lib/serialization/ObjectMiddleware.js +50 -13
  285. package/lib/serialization/PlainObjectSerializer.js +9 -8
  286. package/lib/serialization/RegExpObjectSerializer.js +2 -2
  287. package/lib/serialization/Serializer.js +1 -0
  288. package/lib/serialization/SetObjectSerializer.js +4 -8
  289. package/lib/sharing/ConsumeSharedModule.js +6 -7
  290. package/lib/sharing/ConsumeSharedPlugin.js +1 -0
  291. package/lib/sharing/ConsumeSharedRuntimeModule.js +46 -41
  292. package/lib/sharing/ProvideSharedDependency.js +30 -15
  293. package/lib/sharing/ProvideSharedModule.js +30 -11
  294. package/lib/sharing/ProvideSharedPlugin.js +4 -2
  295. package/lib/sharing/SharePlugin.js +3 -0
  296. package/lib/sharing/ShareRuntimeModule.js +18 -16
  297. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  298. package/lib/sharing/utils.js +1 -1
  299. package/lib/stats/DefaultStatsFactoryPlugin.js +4 -6
  300. package/lib/stats/DefaultStatsPrinterPlugin.js +14 -14
  301. package/lib/stats/StatsFactory.js +11 -9
  302. package/lib/stats/StatsPrinter.js +9 -2
  303. package/lib/url/URLParserPlugin.js +5 -2
  304. package/lib/util/AsyncQueue.js +10 -0
  305. package/lib/util/LazyBucketSortedSet.js +5 -0
  306. package/lib/util/LazySet.js +6 -4
  307. package/lib/util/LocConverter.js +11 -1
  308. package/lib/util/Semaphore.js +1 -0
  309. package/lib/util/SourceProcessor.js +106 -0
  310. package/lib/util/TupleSet.js +1 -0
  311. package/lib/util/WeakTupleMap.js +27 -1
  312. package/lib/util/chainedImports.js +3 -3
  313. package/lib/util/comparators.js +2 -2
  314. package/lib/util/concatenate.js +31 -7
  315. package/lib/util/createHash.js +0 -1
  316. package/lib/util/deterministicGrouping.js +19 -12
  317. package/lib/util/extractSourceMap.js +1 -1
  318. package/lib/util/findGraphRoots.js +2 -0
  319. package/lib/util/fs.js +10 -5
  320. package/lib/util/hash/DebugHash.js +1 -0
  321. package/lib/util/hash/hash-digest.js +24 -15
  322. package/lib/util/identifier.js +7 -0
  323. package/lib/util/internalSerializables.js +11 -2
  324. package/lib/util/magicComment.js +42 -0
  325. package/lib/util/makeSerializable.js +1 -0
  326. package/lib/util/nonNumericOnlyHash.js +30 -1
  327. package/lib/util/property.js +7 -1
  328. package/lib/util/publicPathPlaceholder.js +64 -0
  329. package/lib/util/registerExternalSerializer.js +4 -4
  330. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  331. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
  332. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -96
  333. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
  334. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +1 -1
  335. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  336. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
  337. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -3
  338. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -1
  339. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
  340. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
  341. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -0
  342. package/lib/wasm-sync/WebAssemblyParser.js +7 -3
  343. package/lib/web/JsonpChunkLoadingRuntimeModule.js +45 -39
  344. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +11 -10
  345. package/package.json +35 -27
  346. package/schemas/WebpackOptions.check.js +1 -1
  347. package/schemas/WebpackOptions.json +212 -3
  348. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -1
  349. package/schemas/plugins/HtmlParserOptions.check.d.ts +7 -0
  350. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  351. package/schemas/plugins/HtmlParserOptions.json +3 -0
  352. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  353. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  354. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  355. package/types.d.ts +1456 -290
  356. package/lib/css/walkCssTokens.js +0 -2020
  357. package/lib/util/AppendOnlyStackedSet.js +0 -93
@@ -0,0 +1,40 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const NormalModule = require("../NormalModule");
8
+ const makeSerializable = require("../util/makeSerializable");
9
+
10
+ /** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
11
+ /** @typedef {import("../NormalModule").NormalModuleCreateData} NormalModuleCreateData */
12
+ /** @typedef {import("./JsonData")} JsonData */
13
+
14
+ /**
15
+ * Defines the build info properties specific to json modules.
16
+ * @typedef {object} KnownJsonModuleBuildInfo
17
+ * @property {JsonData=} jsonData
18
+ */
19
+
20
+ /** @typedef {NormalModuleBuildInfo & KnownJsonModuleBuildInfo} JsonModuleBuildInfo */
21
+
22
+ /**
23
+ * Module class for `json` modules. JSON-specific properties should live here instead of `NormalModule`.
24
+ */
25
+ class JsonModule extends NormalModule {
26
+ /**
27
+ * @param {NormalModuleCreateData} options options object
28
+ */
29
+ constructor(options) {
30
+ super(options);
31
+
32
+ // Redeclared with the json specific shape
33
+ /** @type {JsonModuleBuildInfo | undefined} */
34
+ this.buildInfo = undefined;
35
+ }
36
+ }
37
+
38
+ makeSerializable(JsonModule, "webpack/lib/json/JsonModule");
39
+
40
+ module.exports = JsonModule;
@@ -7,6 +7,7 @@
7
7
 
8
8
  const { JSON_MODULE_TYPE } = require("../ModuleTypeConstants");
9
9
  const JsonGenerator = require("./JsonGenerator");
10
+ const JsonModule = require("./JsonModule");
10
11
  const JsonParser = require("./JsonParser");
11
12
 
12
13
  /** @typedef {import("../Compiler")} Compiler */
@@ -27,6 +28,12 @@ class JsonModulesPlugin {
27
28
  compiler.hooks.compilation.tap(
28
29
  PLUGIN_NAME,
29
30
  (compilation, { normalModuleFactory }) => {
31
+ normalModuleFactory.hooks.createModuleClass
32
+ .for(JSON_MODULE_TYPE)
33
+ .tap(
34
+ PLUGIN_NAME,
35
+ (createData, _resolveData) => new JsonModule(createData)
36
+ );
30
37
  normalModuleFactory.hooks.createParser
31
38
  .for(JSON_MODULE_TYPE)
32
39
  .tap(PLUGIN_NAME, (parserOptions) => {
@@ -11,7 +11,7 @@ const parseJson = require("../util/parseJson");
11
11
  const JsonData = require("./JsonData");
12
12
 
13
13
  /** @typedef {import("../../declarations/WebpackOptions").JsonParserOptions} JsonParserOptions */
14
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
14
+ /** @typedef {import("./JsonModule").JsonModuleBuildInfo} JsonModuleBuildInfo */
15
15
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
16
16
  /** @typedef {import("../Parser").ParserState} ParserState */
17
17
  /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
@@ -55,7 +55,9 @@ class JsonParser extends Parser {
55
55
  ? source
56
56
  : parseFn(source[0] === "\uFEFF" ? source.slice(1) : source);
57
57
  const jsonData = new JsonData(/** @type {Buffer | JsonValue} */ (data));
58
- const buildInfo = /** @type {BuildInfo} */ (state.module.buildInfo);
58
+ const buildInfo = /** @type {JsonModuleBuildInfo} */ (
59
+ state.module.buildInfo
60
+ );
59
61
  buildInfo.jsonData = jsonData;
60
62
  buildInfo.strict = true;
61
63
  const buildMeta = /** @type {BuildMeta} */ (state.module.buildMeta);
@@ -189,6 +189,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
189
189
  );
190
190
  exportsInfo.setUsed(UsageState.Used, runtime);
191
191
  exportsInfo.canMangleUse = false;
192
+ exportsInfo.canInlineUse = false;
192
193
  } else {
193
194
  const exportsInfo = moduleGraph.getExportsInfo(module);
194
195
  exportsInfo.setUsedInUnknownWay(runtime);
@@ -331,6 +332,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
331
332
  Array.isArray(options.export) ? options.export : [options.export]
332
333
  )
333
334
  : "";
335
+ const cst = compilation.runtimeTemplate.renderConst();
334
336
  const result = new ConcatSource(source);
335
337
  if (staticExports) {
336
338
  const exportsInfo = moduleGraph.getExportsInfo(module);
@@ -360,7 +362,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
360
362
  let exports = RuntimeGlobals.exports;
361
363
  if (exportAccess) {
362
364
  result.add(
363
- `var __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
365
+ `${cst} __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
364
366
  );
365
367
 
366
368
  exports = "__webpack_exports_export__";
@@ -386,7 +388,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
386
388
  );
387
389
  } else if (options.name ? this.named === "copy" : this.unnamed === "copy") {
388
390
  result.add(
389
- `var __webpack_export_target__ = ${accessWithInit(
391
+ `${cst} __webpack_export_target__ = ${accessWithInit(
390
392
  fullNameResolved,
391
393
  this._getPrefix(compilation).length,
392
394
  true
@@ -396,7 +398,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
396
398
  let exports = RuntimeGlobals.exports;
397
399
  if (exportAccess) {
398
400
  result.add(
399
- `var __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
401
+ `${cst} __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
400
402
  );
401
403
 
402
404
  exports = "__webpack_exports_export__";
@@ -85,6 +85,7 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
85
85
  );
86
86
  exportsInfo.setUsed(UsageState.Used, runtime);
87
87
  exportsInfo.canMangleUse = false;
88
+ exportsInfo.canInlineUse = false;
88
89
  } else {
89
90
  const exportsInfo = moduleGraph.getExportsInfo(module);
90
91
  exportsInfo.setUsedInUnknownWay(runtime);
@@ -12,6 +12,7 @@ class FalseIIFEUmdWarning extends WebpackError {
12
12
  super();
13
13
  /** @type {string} */
14
14
  this.name = "FalseIIFEUmdWarning";
15
+ /** @type {string} */
15
16
  this.message =
16
17
  "Configuration:\nSetting 'output.iife' to 'false' is incompatible with 'output.library.type' set to 'umd'. This configuration may cause unexpected behavior, as UMD libraries are expected to use an IIFE (Immediately Invoked Function Expression) to support various module formats. Consider setting 'output.iife' to 'true' or choosing a different 'library.type' to ensure compatibility.\nLearn more: https://webpack.js.org/configuration/output/";
17
18
  }
@@ -13,6 +13,7 @@ const Template = require("../Template");
13
13
  const HarmonyExportImportedSpecifierDependency = require("../dependencies/HarmonyExportImportedSpecifierDependency");
14
14
  const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
15
15
  const ConcatenatedModule = require("../optimize/ConcatenatedModule");
16
+ const { InlinedUsedName } = require("../optimize/InlineExports");
16
17
  const { propertyAccess } = require("../util/property");
17
18
  const { getEntryRuntime, getRuntimeKey } = require("../util/runtime");
18
19
  const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
@@ -31,6 +32,7 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
31
32
  /** @typedef {import("../javascript/JavascriptModulesPlugin").ModuleRenderContext} ModuleRenderContext */
32
33
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
33
34
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
35
+ /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
34
36
 
35
37
  /**
36
38
  * Defines the shared type used by this module.
@@ -208,18 +210,24 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
208
210
  );
209
211
  exportsInfo.setUsed(UsageState.Used, runtime);
210
212
  exportsInfo.canMangleUse = false;
213
+ exportsInfo.canInlineUse = false;
211
214
  } else {
212
215
  const exportsInfo = moduleGraph.getExportsInfo(module);
213
216
 
214
217
  if (
215
218
  // If the entry module is commonjs, its exports cannot be mangled
216
- (module.buildMeta && module.buildMeta.treatAsCommonJs) ||
219
+ (module.buildMeta &&
220
+ /** @type {JavascriptModuleBuildMeta} */ (module.buildMeta)
221
+ .treatAsCommonJs) ||
217
222
  // The entry module provides unknown exports
218
223
  exportsInfo._otherExportsInfo.provided === null
219
224
  ) {
220
225
  exportsInfo.setUsedInUnknownWay(runtime);
221
226
  } else {
222
227
  exportsInfo.setAllKnownExportsUsed(runtime);
228
+ for (const exportInfo of exportsInfo.ownedExports) {
229
+ exportInfo.canInlineUse = false;
230
+ }
223
231
  }
224
232
  }
225
233
  moduleGraph.addExtraReason(module, "used as library export");
@@ -265,7 +273,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
265
273
  const result = new ConcatSource(source);
266
274
  /** @type {Set<string>} */
267
275
  const moduleRequests = new Set();
268
- /** @type {Map<string, string>} */
276
+ /** @type {Map<string, string | InlinedUsedName>} */
269
277
  const unknownProvidedExports = new Map();
270
278
 
271
279
  /**
@@ -307,7 +315,9 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
307
315
  continue;
308
316
  }
309
317
  const originalName = exportInfo.name;
310
- const usedName = exportInfo.getUsedName(originalName, runtime);
318
+ const usedName =
319
+ /** @type {string | InlinedUsedName | false} */
320
+ (exportInfo.getUsedName(originalName, runtime));
311
321
 
312
322
  if (!alreadyRenderedExports.has(originalName) && usedName) {
313
323
  unknownProvidedExports.set(originalName, usedName);
@@ -327,7 +337,13 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
327
337
  for (const [origin, used] of unknownProvidedExports) {
328
338
  exports.push([
329
339
  origin,
330
- `${RuntimeGlobals.exports}${propertyAccess([used])}`
340
+ used instanceof InlinedUsedName
341
+ ? used.render(
342
+ Template.toNormalComment(
343
+ `inlined export ${propertyAccess([origin])}`
344
+ )
345
+ )
346
+ : `${RuntimeGlobals.exports}${propertyAccess([used])}`
331
347
  ]);
332
348
  }
333
349
 
@@ -385,7 +401,9 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
385
401
  const isAsync = moduleGraph.isAsync(module);
386
402
 
387
403
  const treatAsCommonJs =
388
- module.buildMeta && module.buildMeta.treatAsCommonJs;
404
+ module.buildMeta &&
405
+ /** @type {JavascriptModuleBuildMeta} */ (module.buildMeta)
406
+ .treatAsCommonJs;
389
407
  const skipRenderDefaultExport = Boolean(treatAsCommonJs);
390
408
 
391
409
  const moduleExportsInfo = moduleGraph.getExportsInfo(module);
@@ -430,6 +448,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
430
448
  }
431
449
  }
432
450
 
451
+ // The exports of entry module are never inlined
433
452
  const usedName =
434
453
  /** @type {string} */
435
454
  (exportInfo.getUsedName(originalName, chunk.runtime));
@@ -141,9 +141,9 @@ class SystemLibraryPlugin extends AbstractLibraryPlugin {
141
141
  /** @type {ExportInfoName[]} */
142
142
  const handledNames = [];
143
143
  for (const exportInfo of exportsInfo.orderedExports) {
144
- const used = exportInfo.getUsedName(
145
- undefined,
146
- chunk.runtime
144
+ // The exports of `ExternalModule` are never inlined
145
+ const used = /** @type {string | false} */ (
146
+ exportInfo.getUsedName(undefined, chunk.runtime)
147
147
  );
148
148
  if (used) {
149
149
  if (otherUnused || used !== exportInfo.name) {
@@ -101,3 +101,4 @@ class NodeTargetPlugin {
101
101
  }
102
102
 
103
103
  module.exports = NodeTargetPlugin;
104
+ module.exports.builtins = builtins;
@@ -8,6 +8,7 @@
8
8
  const util = require("util");
9
9
  const Watchpack = require("watchpack");
10
10
 
11
+ /** @typedef {InstanceType<import("watchpack")>} Watchpack */
11
12
  /** @typedef {import("watchpack").TimeInfoEntries} TimeInfoEntries */
12
13
  /** @typedef {import("watchpack").WatchOptions} WatchOptions */
13
14
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
@@ -102,6 +102,11 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
102
102
  const stateExpression = withHmr
103
103
  ? `${RuntimeGlobals.hmrRuntimeStatePrefix}_readFileVm`
104
104
  : undefined;
105
+ const installedChunksObject = `{\n${Template.indent(
106
+ Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
107
+ ",\n"
108
+ )
109
+ )}\n}`;
105
110
 
106
111
  return Template.asString([
107
112
  withBaseURI
@@ -111,14 +116,10 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
111
116
  "// object to store loaded chunks",
112
117
  '// "0" means "already loaded", Promise means loading',
113
118
  `var installedChunks = ${
114
- stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
115
- }{`,
116
- Template.indent(
117
- Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
118
- ",\n"
119
- )
120
- ),
121
- "};",
119
+ stateExpression
120
+ ? runtimeTemplate.assignOr(stateExpression, installedChunksObject)
121
+ : installedChunksObject
122
+ };`,
122
123
  "",
123
124
  withOnChunkLoad
124
125
  ? `${
@@ -237,7 +238,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
237
238
  `if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
238
239
  Template.indent([
239
240
  "currentUpdate[moduleId] = updatedModules[moduleId];",
240
- "if(updatedModulesList) updatedModulesList.push(moduleId);"
241
+ `${runtimeTemplate.optionalChaining("updatedModulesList", "push(moduleId)")};`
241
242
  ]),
242
243
  "}"
243
244
  ]),
@@ -103,6 +103,12 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
103
103
  ? `${RuntimeGlobals.hmrRuntimeStatePrefix}_require`
104
104
  : undefined;
105
105
 
106
+ const cst = runtimeTemplate.renderConst();
107
+ const installedChunksObject = `{\n${Template.indent(
108
+ Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 1`).join(
109
+ ",\n"
110
+ )
111
+ )}\n}`;
106
112
  return Template.asString([
107
113
  withBaseURI
108
114
  ? this._generateBaseUri(chunk, rootOutputDir, runtimeTemplate)
@@ -110,15 +116,11 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
110
116
  "",
111
117
  "// object to store loaded chunks",
112
118
  '// "1" means "loaded", otherwise not loaded yet',
113
- `var installedChunks = ${
114
- stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
115
- }{`,
116
- Template.indent(
117
- Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 1`).join(
118
- ",\n"
119
- )
120
- ),
121
- "};",
119
+ `${cst} installedChunks = ${
120
+ stateExpression
121
+ ? runtimeTemplate.assignOr(stateExpression, installedChunksObject)
122
+ : installedChunksObject
123
+ };`,
122
124
  "",
123
125
  withOnChunkLoad
124
126
  ? `${
@@ -130,8 +132,8 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
130
132
  : "// no on chunks loaded",
131
133
  "",
132
134
  withLoading || withExternalInstallChunk
133
- ? `var installChunk = ${runtimeTemplate.basicFunction("chunk", [
134
- "var moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime;",
135
+ ? `${cst} installChunk = ${runtimeTemplate.basicFunction("chunk", [
136
+ `${cst} moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime;`,
135
137
  "for(var moduleId in moreModules) {",
136
138
  Template.indent([
137
139
  `if(${RuntimeGlobals.hasOwnProperty}(moreModules, moduleId)) {`,
@@ -164,7 +166,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
164
166
  Template.indent([
165
167
  // The require function loads and runs a chunk. When the chunk is being run,
166
168
  // it can call __webpack_require__.C to directly complete installed.
167
- `var installedChunk = require(${JSON.stringify(
169
+ `${cst} installedChunk = require(${JSON.stringify(
168
170
  rootOutputDir
169
171
  )} + ${
170
172
  RuntimeGlobals.getChunkScriptFilename
@@ -194,17 +196,17 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
194
196
  ? Template.asString([
195
197
  "function loadUpdateChunk(chunkId, updatedModulesList) {",
196
198
  Template.indent([
197
- `var update = require(${JSON.stringify(rootOutputDir)} + ${
199
+ `${cst} update = require(${JSON.stringify(rootOutputDir)} + ${
198
200
  RuntimeGlobals.getChunkUpdateScriptFilename
199
201
  }(chunkId));`,
200
- "var updatedModules = update.modules;",
201
- "var runtime = update.runtime;",
202
+ `${cst} updatedModules = update.modules;`,
203
+ `${cst} runtime = update.runtime;`,
202
204
  "for(var moduleId in updatedModules) {",
203
205
  Template.indent([
204
206
  `if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
205
207
  Template.indent([
206
208
  "currentUpdate[moduleId] = updatedModules[moduleId];",
207
- "if(updatedModulesList) updatedModulesList.push(moduleId);"
209
+ `${runtimeTemplate.optionalChaining("updatedModulesList", "push(moduleId)")};`
208
210
  ]),
209
211
  "}"
210
212
  ]),