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
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  /*
3
2
  MIT License http://www.opensource.org/licenses/mit-license.php
4
3
  Author Tobias Koppers @sokra
@@ -6,33 +5,115 @@
6
5
 
7
6
  "use strict";
8
7
 
9
- var $interceptModuleExecution$ = undefined;
10
- var $moduleCache$ = undefined;
11
- var $hmrModuleData$ = undefined;
12
- /** @type {() => Promise} */
13
- var $hmrDownloadManifest$ = undefined;
14
- var $hmrDownloadUpdateHandlers$ = undefined;
15
- var $hmrInvalidateModuleHandlers$ = undefined;
16
- var __webpack_require__ = undefined;
8
+ /** @typedef {string | number} ModuleId */
9
+ /** @typedef {Record<string, unknown>} HotData */
10
+ /** @typedef {(data: HotData) => void} DisposeHandler */
11
+ /** @typedef {(outdatedDependencies: ModuleId[]) => void} AcceptCallback */
12
+ /** @typedef {(err: Error, context: { moduleId: ModuleId, dependencyId?: ModuleId, module?: HotModule }) => void} AcceptErrorHandler */
13
+ /** @typedef {(status: string) => (Promise<void> | void)} StatusHandler */
14
+ /** @typedef {Record<string, unknown>} ApplyOptions */
15
+ /** @typedef {(reportError: (err: Error) => void) => Promise<ModuleId[]>} ApplyFn */
16
+ /** @typedef {{ (id: ModuleId): unknown, e: (chunkId: ModuleId, fetchPriority?: string) => Promise<unknown>, [name: string]: unknown }} WebpackRequire */
17
+
18
+ /**
19
+ * @typedef {object} ApplyResult
20
+ * @property {Error=} error fatal error that aborts the update
21
+ * @property {(() => void)=} dispose dispose phase of the update
22
+ * @property {ApplyFn=} apply apply phase of the update
23
+ */
24
+
25
+ /** @typedef {(options: ApplyOptions) => ApplyResult} ApplyHandler */
26
+ /** @typedef {(moduleId: ModuleId, applyHandlers: ApplyHandler[]) => void} InvalidateModuleHandler */
27
+ /** @typedef {(chunkIds: ModuleId[], removedChunks: ModuleId[], removedModules: ModuleId[], promises: Promise<unknown>[], applyHandlers: ApplyHandler[], updatedModulesList: ModuleId[], css: ModuleId[] | undefined, forceLoadChunks: ModuleId[] | undefined) => void} DownloadUpdateHandler */
28
+
29
+ /**
30
+ * @typedef {object} HMRManifest
31
+ * @property {ModuleId[]} c updated chunk ids
32
+ * @property {ModuleId[]} r removed chunk ids
33
+ * @property {ModuleId[]} m removed module ids
34
+ * @property {ModuleId[]=} css updated css chunk ids
35
+ * @property {ModuleId[]=} f chunk ids to force-load
36
+ */
37
+
38
+ /**
39
+ * @typedef {object} HotModule
40
+ * @property {ModuleId} id module id
41
+ * @property {Hot} hot hot API of the module
42
+ * @property {ModuleId[]} parents ids of modules requiring this module
43
+ * @property {ModuleId[]} children ids of modules required by this module
44
+ */
45
+
46
+ /**
47
+ * @typedef {object} Hot
48
+ * @property {Record<ModuleId, AcceptCallback>} _acceptedDependencies accept callbacks by dependency id
49
+ * @property {Record<ModuleId, AcceptErrorHandler | undefined>} _acceptedErrorHandlers error handlers by dependency id
50
+ * @property {Record<ModuleId, boolean>} _declinedDependencies declined dependency ids
51
+ * @property {boolean | EXPECTED_FUNCTION} _selfAccepted true or the self-accept error handler
52
+ * @property {boolean} _selfDeclined module declined itself
53
+ * @property {boolean} _selfInvalidated module invalidated itself
54
+ * @property {DisposeHandler[]} _disposeHandlers registered dispose handlers
55
+ * @property {boolean} _main module is the entry of the update
56
+ * @property {() => void} _requireSelf re-require the module on apply
57
+ * @property {boolean} active module is not disposed
58
+ * @property {(dep?: ModuleId | ModuleId[] | AcceptCallback, callback?: AcceptCallback, errorHandler?: AcceptErrorHandler) => void} accept accept updates
59
+ * @property {(dep?: ModuleId | ModuleId[]) => void} decline decline updates
60
+ * @property {(callback: DisposeHandler) => void} dispose add a dispose handler
61
+ * @property {(callback: DisposeHandler) => void} addDisposeHandler add a dispose handler
62
+ * @property {(callback: DisposeHandler) => void} removeDisposeHandler remove a dispose handler
63
+ * @property {() => void} invalidate invalidate the module
64
+ * @property {(applyOnUpdate?: boolean | ApplyOptions) => Promise<ModuleId[] | null>} check check for an update
65
+ * @property {(options?: ApplyOptions) => Promise<ModuleId[]>} apply apply a checked update
66
+ * @property {(l?: StatusHandler) => string | void} status get status or add a status handler
67
+ * @property {(l: StatusHandler) => void} addStatusHandler add a status handler
68
+ * @property {(l: StatusHandler) => void} removeStatusHandler remove a status handler
69
+ * @property {HotData} data data left from the previous dispose
70
+ */
71
+
72
+ /** @typedef {{ module: HotModule, require: WebpackRequire, id: ModuleId }} InterceptOptions */
73
+
74
+ // Globals injected by code generation; declared here only to type the template.
75
+ /* eslint-disable no-unassigned-vars */
76
+ /** @type {((options: InterceptOptions) => void)[]} */
77
+ var $interceptModuleExecution$;
78
+ /** @type {Record<ModuleId, HotModule>} */
79
+ var $moduleCache$;
80
+ /** @type {Record<ModuleId, HotData>} */
81
+ var $hmrModuleData$;
82
+ /** @type {() => Promise<HMRManifest | void>} */
83
+ var $hmrDownloadManifest$;
84
+ /** @type {Record<string, DownloadUpdateHandler>} */
85
+ var $hmrDownloadUpdateHandlers$;
86
+ /** @type {Record<string, InvalidateModuleHandler>} */
87
+ var $hmrInvalidateModuleHandlers$;
88
+ /** @type {(id: ModuleId) => unknown} */
89
+ var __webpack_require__;
90
+ /* eslint-enable no-unassigned-vars */
17
91
 
18
92
  module.exports = function () {
93
+ /** @type {Record<ModuleId, HotData>} */
19
94
  var currentModuleData = {};
20
95
  var installedModules = $moduleCache$;
21
96
 
22
97
  // module and require creation
98
+ /** @type {ModuleId | undefined} */
23
99
  var currentChildModule;
100
+ /** @type {ModuleId[]} */
24
101
  var currentParents = [];
25
102
 
26
103
  // status
104
+ /** @type {StatusHandler[]} */
27
105
  var registeredStatusHandlers = [];
28
106
  var currentStatus = "idle";
29
107
 
30
108
  // while downloading
31
109
  var blockingPromises = 0;
110
+ /** @type {(() => void)[]} */
32
111
  var blockingPromisesWaiting = [];
33
112
 
34
113
  // The update info
114
+ /** @type {ApplyHandler[] | undefined} */
35
115
  var currentUpdateApplyHandlers;
116
+ /** @type {ModuleId[] | undefined} */
36
117
  var queuedInvalidatedModules;
37
118
 
38
119
  $hmrModuleData$ = currentModuleData;
@@ -50,9 +131,18 @@ module.exports = function () {
50
131
  $hmrDownloadUpdateHandlers$ = {};
51
132
  $hmrInvalidateModuleHandlers$ = {};
52
133
 
134
+ /**
135
+ * @param {WebpackRequire} require the original require function
136
+ * @param {ModuleId} moduleId module id
137
+ * @returns {WebpackRequire} hot-aware require function
138
+ */
53
139
  function createRequire(require, moduleId) {
54
140
  var me = installedModules[moduleId];
55
141
  if (!me) return require;
142
+ /**
143
+ * @param {ModuleId} request requested module id
144
+ * @returns {unknown} module exports
145
+ */
56
146
  var fn = function (request) {
57
147
  if (me.hot.active) {
58
148
  if (installedModules[request]) {
@@ -78,6 +168,10 @@ module.exports = function () {
78
168
  }
79
169
  return require(request);
80
170
  };
171
+ /**
172
+ * @param {string} name property name
173
+ * @returns {PropertyDescriptor} descriptor forwarding to require
174
+ */
81
175
  var createPropertyDescriptor = function (name) {
82
176
  return {
83
177
  configurable: true,
@@ -95,14 +189,20 @@ module.exports = function () {
95
189
  Object.defineProperty(fn, name, createPropertyDescriptor(name));
96
190
  }
97
191
  }
98
- fn.e = function (chunkId, fetchPriority) {
192
+ /** @type {WebpackRequire} */ (fn).e = function (chunkId, fetchPriority) {
99
193
  return trackBlockingPromise(require.e(chunkId, fetchPriority));
100
194
  };
101
- return fn;
195
+ return /** @type {WebpackRequire} */ (fn);
102
196
  }
103
197
 
198
+ /**
199
+ * @param {ModuleId} moduleId module id
200
+ * @param {HotModule} me the module
201
+ * @returns {Hot} hot API
202
+ */
104
203
  function createModuleHotObject(moduleId, me) {
105
204
  var _main = currentChildModule !== moduleId;
205
+ /** @type {Hot} */
106
206
  var hot = {
107
207
  // private stuff
108
208
  _acceptedDependencies: {},
@@ -159,7 +259,7 @@ module.exports = function () {
159
259
  Object.keys($hmrInvalidateModuleHandlers$).forEach(function (key) {
160
260
  $hmrInvalidateModuleHandlers$[key](
161
261
  moduleId,
162
- currentUpdateApplyHandlers
262
+ /** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers)
163
263
  );
164
264
  });
165
265
  setStatus("ready");
@@ -168,7 +268,7 @@ module.exports = function () {
168
268
  Object.keys($hmrInvalidateModuleHandlers$).forEach(function (key) {
169
269
  $hmrInvalidateModuleHandlers$[key](
170
270
  moduleId,
171
- currentUpdateApplyHandlers
271
+ /** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers)
172
272
  );
173
273
  });
174
274
  break;
@@ -208,8 +308,13 @@ module.exports = function () {
208
308
  return hot;
209
309
  }
210
310
 
311
+ /**
312
+ * @param {string} newStatus new status
313
+ * @returns {Promise<void>} promise resolving when all handlers ran
314
+ */
211
315
  function setStatus(newStatus) {
212
316
  currentStatus = newStatus;
317
+ /** @type {(Promise<void> | void)[]} */
213
318
  var results = [];
214
319
 
215
320
  for (var i = 0; i < registeredStatusHandlers.length; i++)
@@ -232,6 +337,10 @@ module.exports = function () {
232
337
  }
233
338
  }
234
339
 
340
+ /**
341
+ * @param {Promise<unknown>} promise blocking promise
342
+ * @returns {Promise<unknown>} the same promise
343
+ */
235
344
  function trackBlockingPromise(promise) {
236
345
  switch (currentStatus) {
237
346
  case "ready":
@@ -246,15 +355,25 @@ module.exports = function () {
246
355
  }
247
356
  }
248
357
 
358
+ /**
359
+ * @param {() => Promise<ModuleId[]>} fn function to run once unblocked
360
+ * @returns {Promise<ModuleId[]>} result of fn
361
+ */
249
362
  function waitForBlockingPromises(fn) {
250
363
  if (blockingPromises === 0) return fn();
251
- return new Promise(function (resolve) {
252
- blockingPromisesWaiting.push(function () {
253
- resolve(fn());
254
- });
255
- });
364
+ return /** @type {Promise<ModuleId[]>} */ (
365
+ new Promise(function (resolve) {
366
+ blockingPromisesWaiting.push(function () {
367
+ resolve(fn());
368
+ });
369
+ })
370
+ );
256
371
  }
257
372
 
373
+ /**
374
+ * @param {boolean | ApplyOptions=} applyOnUpdate apply the update right away
375
+ * @returns {Promise<ModuleId[] | null>} updated module ids or null
376
+ */
258
377
  function hotCheck(applyOnUpdate) {
259
378
  if (currentStatus !== "idle") {
260
379
  throw new Error("check() is only allowed in idle status");
@@ -271,6 +390,7 @@ module.exports = function () {
271
390
  }
272
391
 
273
392
  return setStatus("prepare").then(function () {
393
+ /** @type {ModuleId[]} */
274
394
  var updatedModules = [];
275
395
  currentUpdateApplyHandlers = [];
276
396
 
@@ -284,12 +404,13 @@ module.exports = function () {
284
404
  update.r,
285
405
  update.m,
286
406
  promises,
287
- currentUpdateApplyHandlers,
407
+ /** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers),
288
408
  updatedModules,
289
- update.css
409
+ update.css,
410
+ update.f
290
411
  );
291
412
  return promises;
292
- }, [])
413
+ }, /** @type {Promise<unknown>[]} */ ([]))
293
414
  ).then(function () {
294
415
  return waitForBlockingPromises(function () {
295
416
  if (applyOnUpdate) {
@@ -304,6 +425,10 @@ module.exports = function () {
304
425
  });
305
426
  }
306
427
 
428
+ /**
429
+ * @param {ApplyOptions=} options apply options
430
+ * @returns {Promise<ModuleId[]>} updated module ids
431
+ */
307
432
  function hotApply(options) {
308
433
  if (currentStatus !== "ready") {
309
434
  return Promise.resolve().then(function () {
@@ -317,13 +442,19 @@ module.exports = function () {
317
442
  return internalApply(options);
318
443
  }
319
444
 
445
+ /**
446
+ * @param {boolean | ApplyOptions=} options apply options
447
+ * @returns {Promise<ModuleId[]>} updated module ids
448
+ */
320
449
  function internalApply(options) {
321
450
  options = options || {};
322
451
 
323
452
  applyInvalidatedModules();
324
453
 
325
- var results = currentUpdateApplyHandlers.map(function (handler) {
326
- return handler(options);
454
+ var results = /** @type {ApplyHandler[]} */ (
455
+ currentUpdateApplyHandlers
456
+ ).map(function (handler) {
457
+ return handler(/** @type {ApplyOptions} */ (options));
327
458
  });
328
459
  currentUpdateApplyHandlers = undefined;
329
460
 
@@ -349,13 +480,22 @@ module.exports = function () {
349
480
  // Now in "apply" phase
350
481
  var applyPromise = setStatus("apply");
351
482
 
483
+ /** @type {Error | undefined} */
352
484
  var error;
485
+ /**
486
+ * @param {Error} err error thrown while applying
487
+ * @returns {void}
488
+ */
353
489
  var reportError = function (err) {
354
490
  if (!error) error = err;
355
491
  };
356
492
 
493
+ /** @type {ModuleId[]} */
357
494
  var outdatedModules = [];
358
495
 
496
+ /**
497
+ * @returns {Promise<ModuleId[]>} updated module ids
498
+ */
359
499
  var onAccepted = function () {
360
500
  return Promise.all([disposePromise, applyPromise]).then(function () {
361
501
  // handle errors in accept handlers and self accepted module load
@@ -386,7 +526,7 @@ module.exports = function () {
386
526
  return result.apply;
387
527
  })
388
528
  .map(function (result) {
389
- return result.apply(reportError);
529
+ return /** @type {ApplyFn} */ (result.apply)(reportError);
390
530
  })
391
531
  )
392
532
  .then(function (applyResults) {
@@ -401,16 +541,21 @@ module.exports = function () {
401
541
  .then(onAccepted);
402
542
  }
403
543
 
544
+ /**
545
+ * @returns {boolean | undefined} true when invalidated modules were applied
546
+ */
404
547
  function applyInvalidatedModules() {
405
548
  if (queuedInvalidatedModules) {
406
549
  if (!currentUpdateApplyHandlers) currentUpdateApplyHandlers = [];
407
550
  Object.keys($hmrInvalidateModuleHandlers$).forEach(function (key) {
408
- queuedInvalidatedModules.forEach(function (moduleId) {
409
- $hmrInvalidateModuleHandlers$[key](
410
- moduleId,
411
- currentUpdateApplyHandlers
412
- );
413
- });
551
+ /** @type {ModuleId[]} */ (queuedInvalidatedModules).forEach(
552
+ function (moduleId) {
553
+ $hmrInvalidateModuleHandlers$[key](
554
+ moduleId,
555
+ /** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers)
556
+ );
557
+ }
558
+ );
414
559
  });
415
560
  queuedInvalidatedModules = undefined;
416
561
  return true;
@@ -9,6 +9,8 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
11
 
12
+ /** @typedef {import("../Compilation")} Compilation */
13
+
12
14
  class HotModuleReplacementRuntimeModule extends RuntimeModule {
13
15
  constructor() {
14
16
  super("hot module replacement", RuntimeModule.STAGE_BASIC);
@@ -19,9 +21,14 @@ class HotModuleReplacementRuntimeModule extends RuntimeModule {
19
21
  * @returns {string | null} runtime code
20
22
  */
21
23
  generate() {
24
+ const { runtimeTemplate } = /** @type {Compilation} */ (this.compilation);
22
25
  return Template.getFunctionContent(
23
26
  require("./HotModuleReplacement.runtime")
24
27
  )
28
+ .replace(
29
+ "Object.prototype.hasOwnProperty.call(require, name)",
30
+ runtimeTemplate.objectHasOwn("require", "name")
31
+ )
25
32
  .replace(
26
33
  /\$interceptModuleExecution\$/g,
27
34
  RuntimeGlobals.interceptModuleExecution