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
@@ -32,6 +32,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
32
32
  */
33
33
  constructor(runtimeRequirements) {
34
34
  super("consumes", RuntimeModule.STAGE_ATTACH);
35
+ /** @type {ReadOnlyRuntimeRequirements} */
35
36
  this._runtimeRequirements = runtimeRequirements;
36
37
  }
37
38
 
@@ -100,19 +101,20 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
100
101
  addModules(modules, chunk, initialConsumes);
101
102
  }
102
103
  if (moduleIdToSourceMapping.size === 0) return null;
104
+ const cst = runtimeTemplate.renderConst();
103
105
  return Template.asString([
104
106
  parseVersionRuntimeCode(runtimeTemplate),
105
107
  versionLtRuntimeCode(runtimeTemplate),
106
108
  rangeToStringRuntimeCode(runtimeTemplate),
107
109
  satisfyRuntimeCode(runtimeTemplate),
108
- `var exists = ${runtimeTemplate.basicFunction("scope, key", [
110
+ `${cst} exists = ${runtimeTemplate.basicFunction("scope, key", [
109
111
  `return scope && ${RuntimeGlobals.hasOwnProperty}(scope, key);`
110
112
  ])}`,
111
- `var get = ${runtimeTemplate.basicFunction("entry", [
113
+ `${cst} get = ${runtimeTemplate.basicFunction("entry", [
112
114
  "entry.loaded = 1;",
113
115
  "return entry.get()"
114
116
  ])};`,
115
- `var eagerOnly = ${runtimeTemplate.basicFunction("versions", [
117
+ `${cst} eagerOnly = ${runtimeTemplate.basicFunction("versions", [
116
118
  `return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
117
119
  "filtered, version",
118
120
  Template.indent([
@@ -123,10 +125,10 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
123
125
  ])
124
126
  )}, {});`
125
127
  ])};`,
126
- `var findLatestVersion = ${runtimeTemplate.basicFunction(
128
+ `${cst} findLatestVersion = ${runtimeTemplate.basicFunction(
127
129
  "scope, key, eager",
128
130
  [
129
- "var versions = eager ? eagerOnly(scope[key]) : scope[key];",
131
+ `${cst} versions = eager ? eagerOnly(scope[key]) : scope[key];`,
130
132
  `var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
131
133
  "a, b",
132
134
  ["return !a || versionLt(a, b) ? b : a;"]
@@ -134,10 +136,10 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
134
136
  "return key && versions[key];"
135
137
  ]
136
138
  )};`,
137
- `var findSatisfyingVersion = ${runtimeTemplate.basicFunction(
139
+ `${cst} findSatisfyingVersion = ${runtimeTemplate.basicFunction(
138
140
  "scope, key, requiredVersion, eager",
139
141
  [
140
- "var versions = eager ? eagerOnly(scope[key]) : scope[key];",
142
+ `${cst} versions = eager ? eagerOnly(scope[key]) : scope[key];`,
141
143
  `var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
142
144
  "a, b",
143
145
  [
@@ -148,26 +150,26 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
148
150
  "return key && versions[key]"
149
151
  ]
150
152
  )};`,
151
- `var findSingletonVersionKey = ${runtimeTemplate.basicFunction(
153
+ `${cst} findSingletonVersionKey = ${runtimeTemplate.basicFunction(
152
154
  "scope, key, eager",
153
155
  [
154
- "var versions = eager ? eagerOnly(scope[key]) : scope[key];",
156
+ `${cst} versions = eager ? eagerOnly(scope[key]) : scope[key];`,
155
157
  `return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
156
158
  "a, b",
157
159
  ["return !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;"]
158
160
  )}, 0);`
159
161
  ]
160
162
  )};`,
161
- `var getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(
163
+ `${cst} getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(
162
164
  "scope, key, version, requiredVersion",
163
165
  [
164
166
  'return "Unsatisfied version " + version + " from " + (version && scope[key][version].from) + " of shared singleton module " + key + " (required " + rangeToString(requiredVersion) + ")"'
165
167
  ]
166
168
  )};`,
167
- `var getInvalidVersionMessage = ${runtimeTemplate.basicFunction(
169
+ `${cst} getInvalidVersionMessage = ${runtimeTemplate.basicFunction(
168
170
  "scope, scopeName, key, requiredVersion, eager",
169
171
  [
170
- "var versions = scope[key];",
172
+ `${cst} versions = scope[key];`,
171
173
  'return "No satisfying version (" + rangeToString(requiredVersion) + ")" + (eager ? " for eager consumption" : "") + " of shared module " + key + " found in shared scope " + scopeName + ".\\n" +',
172
174
  `\t"Available versions: " + Object.keys(versions).map(${runtimeTemplate.basicFunction(
173
175
  "key",
@@ -175,26 +177,29 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
175
177
  )}).join(", ");`
176
178
  ]
177
179
  )};`,
178
- `var fail = ${runtimeTemplate.basicFunction("msg", [
180
+ `${cst} fail = ${runtimeTemplate.basicFunction("msg", [
179
181
  "throw new Error(msg);"
180
182
  ])}`,
181
- `var failAsNotExist = ${runtimeTemplate.basicFunction("scopeName, key", [
182
- 'return fail("Shared module " + key + " doesn\'t exist in shared scope " + scopeName);'
183
- ])}`,
184
- `var warn = /*#__PURE__*/ ${
183
+ `${cst} failAsNotExist = ${runtimeTemplate.basicFunction(
184
+ "scopeName, key",
185
+ [
186
+ 'return fail("Shared module " + key + " doesn\'t exist in shared scope " + scopeName);'
187
+ ]
188
+ )}`,
189
+ `${cst} warn = /*#__PURE__*/ ${
185
190
  compilation.outputOptions.ignoreBrowserWarnings
186
191
  ? runtimeTemplate.basicFunction("", "")
187
192
  : runtimeTemplate.basicFunction("msg", [
188
193
  'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
189
194
  ])
190
195
  };`,
191
- `var init = ${runtimeTemplate.returningFunction(
196
+ `${cst} init = ${runtimeTemplate.returningFunction(
192
197
  Template.asString([
193
198
  "function(scopeName, key, eager, c, d) {",
194
199
  Template.indent([
195
- `var promise = ${RuntimeGlobals.initializeSharing}(scopeName);`,
200
+ `${cst} promise = ${RuntimeGlobals.initializeSharing}(scopeName);`,
196
201
  // if we require eager shared, we expect it to be already loaded before it requested, no need to wait the whole scope loaded.
197
- "if (promise && promise.then && !eager) { ",
202
+ `if (${runtimeTemplate.optionalChaining("promise", "then")} && !eager) { `,
198
203
  Template.indent([
199
204
  `return promise.then(fn.bind(fn, scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], key, false, c, d));`
200
205
  ]),
@@ -206,50 +211,50 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
206
211
  "fn"
207
212
  )};`,
208
213
  "",
209
- `var useFallback = ${runtimeTemplate.basicFunction(
214
+ `${cst} useFallback = ${runtimeTemplate.basicFunction(
210
215
  "scopeName, key, fallback",
211
216
  ["return fallback ? fallback() : failAsNotExist(scopeName, key);"]
212
217
  )}`,
213
- `var load = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
218
+ `${cst} load = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
214
219
  "scopeName, scope, key, eager, fallback",
215
220
  [
216
221
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
217
222
  "return get(findLatestVersion(scope, key, eager));"
218
223
  ]
219
224
  )});`,
220
- `var loadVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
225
+ `${cst} loadVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
221
226
  "scopeName, scope, key, eager, requiredVersion, fallback",
222
227
  [
223
228
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
224
- "var satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);",
229
+ `${cst} satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);`,
225
230
  "if (satisfyingVersion) return get(satisfyingVersion);",
226
231
  "warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))",
227
232
  "return get(findLatestVersion(scope, key, eager));"
228
233
  ]
229
234
  )});`,
230
- `var loadStrictVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
235
+ `${cst} loadStrictVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
231
236
  "scopeName, scope, key, eager, requiredVersion, fallback",
232
237
  [
233
238
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
234
- "var satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);",
239
+ `${cst} satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);`,
235
240
  "if (satisfyingVersion) return get(satisfyingVersion);",
236
241
  "if (fallback) return fallback();",
237
242
  "fail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));"
238
243
  ]
239
244
  )});`,
240
- `var loadSingleton = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
245
+ `${cst} loadSingleton = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
241
246
  "scopeName, scope, key, eager, fallback",
242
247
  [
243
248
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
244
- "var version = findSingletonVersionKey(scope, key, eager);",
249
+ `${cst} version = findSingletonVersionKey(scope, key, eager);`,
245
250
  "return get(scope[key][version]);"
246
251
  ]
247
252
  )});`,
248
- `var loadSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
253
+ `${cst} loadSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
249
254
  "scopeName, scope, key, eager, requiredVersion, fallback",
250
255
  [
251
256
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
252
- "var version = findSingletonVersionKey(scope, key, eager);",
257
+ `${cst} version = findSingletonVersionKey(scope, key, eager);`,
253
258
  "if (!satisfy(requiredVersion, version)) {",
254
259
  Template.indent([
255
260
  "warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
@@ -258,11 +263,11 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
258
263
  "return get(scope[key][version]);"
259
264
  ]
260
265
  )});`,
261
- `var loadStrictSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
266
+ `${cst} loadStrictSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
262
267
  "scopeName, scope, key, eager, requiredVersion, fallback",
263
268
  [
264
269
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
265
- "var version = findSingletonVersionKey(scope, key, eager);",
270
+ `${cst} version = findSingletonVersionKey(scope, key, eager);`,
266
271
  "if (!satisfy(requiredVersion, version)) {",
267
272
  Template.indent([
268
273
  "fail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
@@ -271,8 +276,8 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
271
276
  "return get(scope[key][version]);"
272
277
  ]
273
278
  )});`,
274
- "var installedModules = {};",
275
- "var moduleToHandlerMapping = {",
279
+ `${cst} installedModules = {};`,
280
+ `${cst} moduleToHandlerMapping = {`,
276
281
  Template.indent(
277
282
  Array.from(
278
283
  moduleIdToSourceMapping,
@@ -283,7 +288,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
283
288
 
284
289
  initialConsumes.length > 0
285
290
  ? Template.asString([
286
- `var initialConsumes = ${JSON.stringify(initialConsumes)};`,
291
+ `${cst} initialConsumes = ${JSON.stringify(initialConsumes)};`,
287
292
  `initialConsumes.forEach(${runtimeTemplate.basicFunction("id", [
288
293
  `${
289
294
  RuntimeGlobals.moduleFactories
@@ -291,7 +296,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
291
296
  "// Handle case when module is used sync",
292
297
  "installedModules[id] = 0;",
293
298
  `delete ${RuntimeGlobals.moduleCache}[id];`,
294
- "var factory = moduleToHandlerMapping[id]();",
299
+ `${cst} factory = moduleToHandlerMapping[id]();`,
295
300
  'if(typeof factory !== "function") throw new Error("Shared module is not available for eager consumption: " + id);',
296
301
  "module.exports = factory();"
297
302
  ])}`
@@ -300,12 +305,12 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
300
305
  : "// no consumes in initial chunks",
301
306
  this._runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)
302
307
  ? Template.asString([
303
- `var chunkMapping = ${JSON.stringify(
308
+ `${cst} chunkMapping = ${JSON.stringify(
304
309
  chunkToModuleMapping,
305
310
  null,
306
311
  "\t"
307
312
  )};`,
308
- "var startedInstallModules = {};",
313
+ `${cst} startedInstallModules = {};`,
309
314
  `${
310
315
  RuntimeGlobals.ensureChunkHandlers
311
316
  }.consumes = ${runtimeTemplate.basicFunction("chunkId, promises", [
@@ -316,7 +321,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
316
321
  [
317
322
  `if(${RuntimeGlobals.hasOwnProperty}(installedModules, id)) return promises.push(installedModules[id]);`,
318
323
  "if(!startedInstallModules[id]) {",
319
- `var onFactory = ${runtimeTemplate.basicFunction(
324
+ `${cst} onFactory = ${runtimeTemplate.basicFunction(
320
325
  "factory",
321
326
  [
322
327
  "installedModules[id] = 0;",
@@ -329,7 +334,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
329
334
  ]
330
335
  )};`,
331
336
  "startedInstallModules[id] = true;",
332
- `var onError = ${runtimeTemplate.basicFunction("error", [
337
+ `${cst} onError = ${runtimeTemplate.basicFunction("error", [
333
338
  "delete installedModules[id];",
334
339
  `${
335
340
  RuntimeGlobals.moduleFactories
@@ -340,7 +345,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
340
345
  ])};`,
341
346
  "try {",
342
347
  Template.indent([
343
- "var promise = moduleToHandlerMapping[id]();",
348
+ `${cst} promise = moduleToHandlerMapping[id]();`,
344
349
  "if(promise.then) {",
345
350
  Template.indent(
346
351
  "promises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));"
@@ -8,8 +8,8 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
12
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
11
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, string, string | false, boolean]>} ObjectDeserializerContext */
12
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, string, string | false, boolean]>} ObjectSerializerContext */
13
13
 
14
14
  class ProvideSharedDependency extends Dependency {
15
15
  /**
@@ -22,10 +22,15 @@ class ProvideSharedDependency extends Dependency {
22
22
  */
23
23
  constructor(shareScope, name, version, request, eager) {
24
24
  super();
25
+ /** @type {string} */
25
26
  this.shareScope = shareScope;
27
+ /** @type {string} */
26
28
  this.name = name;
29
+ /** @type {string | false} */
27
30
  this.version = version;
31
+ /** @type {string} */
28
32
  this.request = request;
33
+ /** @type {boolean} */
29
34
  this.eager = eager;
30
35
  }
31
36
 
@@ -48,11 +53,12 @@ class ProvideSharedDependency extends Dependency {
48
53
  * @param {ObjectSerializerContext} context context
49
54
  */
50
55
  serialize(context) {
51
- context.write(this.shareScope);
52
- context.write(this.name);
53
- context.write(this.request);
54
- context.write(this.version);
55
- context.write(this.eager);
56
+ context
57
+ .write(this.shareScope)
58
+ .write(this.name)
59
+ .write(this.request)
60
+ .write(this.version)
61
+ .write(this.eager);
56
62
  super.serialize(context);
57
63
  }
58
64
 
@@ -62,16 +68,25 @@ class ProvideSharedDependency extends Dependency {
62
68
  * @returns {ProvideSharedDependency} deserialize fallback dependency
63
69
  */
64
70
  static deserialize(context) {
65
- const { read } = context;
71
+ // wire order is shareScope, name, request, version, eager;
72
+ // reorder into the constructor's (…, version, request, …) signature
73
+ const shareScope = context.read();
74
+ const c1 = context.rest;
75
+ const name = c1.read();
76
+ const c2 = c1.rest;
77
+ const request = c2.read();
78
+ const c3 = c2.rest;
79
+ const version = c3.read();
80
+ const c4 = c3.rest;
81
+ const eager = c4.read();
66
82
  const obj = new ProvideSharedDependency(
67
- read(),
68
- read(),
69
- read(),
70
- read(),
71
- read()
83
+ shareScope,
84
+ name,
85
+ version,
86
+ request,
87
+ eager
72
88
  );
73
- this.shareScope = context.read();
74
- obj.deserialize(context);
89
+ obj.deserialize(c4.rest);
75
90
  return obj;
76
91
  }
77
92
  }
@@ -27,8 +27,8 @@ const ProvideForSharedDependency = require("./ProvideForSharedDependency");
27
27
  /** @typedef {import("../Module").CodeGenerationResultData} CodeGenerationResultData */
28
28
  /** @typedef {import("../RequestShortener")} RequestShortener */
29
29
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
30
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
31
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
30
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, string | false, string, boolean]>} ObjectDeserializerContext */
31
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, string | false, string, boolean]>} ObjectSerializerContext */
32
32
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
33
33
 
34
34
  class ProvideSharedModule extends Module {
@@ -42,10 +42,15 @@ class ProvideSharedModule extends Module {
42
42
  */
43
43
  constructor(shareScope, name, version, request, eager) {
44
44
  super(WEBPACK_MODULE_TYPE_PROVIDE);
45
+ /** @type {string} */
45
46
  this._shareScope = shareScope;
47
+ /** @type {string} */
46
48
  this._name = name;
49
+ /** @type {string | false} */
47
50
  this._version = version;
51
+ /** @type {string} */
48
52
  this._request = request;
53
+ /** @type {boolean} */
49
54
  this._eager = eager;
50
55
  }
51
56
 
@@ -177,12 +182,12 @@ class ProvideSharedModule extends Module {
177
182
  * @param {ObjectSerializerContext} context context
178
183
  */
179
184
  serialize(context) {
180
- const { write } = context;
181
- write(this._shareScope);
182
- write(this._name);
183
- write(this._version);
184
- write(this._request);
185
- write(this._eager);
185
+ context
186
+ .write(this._shareScope)
187
+ .write(this._name)
188
+ .write(this._version)
189
+ .write(this._request)
190
+ .write(this._eager);
186
191
  super.serialize(context);
187
192
  }
188
193
 
@@ -192,9 +197,23 @@ class ProvideSharedModule extends Module {
192
197
  * @returns {ProvideSharedModule} deserialize fallback dependency
193
198
  */
194
199
  static deserialize(context) {
195
- const { read } = context;
196
- const obj = new ProvideSharedModule(read(), read(), read(), read(), read());
197
- obj.deserialize(context);
200
+ const shareScope = context.read();
201
+ const c1 = context.rest;
202
+ const name = c1.read();
203
+ const c2 = c1.rest;
204
+ const version = c2.read();
205
+ const c3 = c2.rest;
206
+ const request = c3.read();
207
+ const c4 = c3.rest;
208
+ const eager = c4.read();
209
+ const obj = new ProvideSharedModule(
210
+ shareScope,
211
+ name,
212
+ version,
213
+ request,
214
+ eager
215
+ );
216
+ obj.deserialize(c4.rest);
198
217
  return obj;
199
218
  }
200
219
  }
@@ -7,6 +7,7 @@
7
7
 
8
8
  const { parseOptions } = require("../container/options");
9
9
  const WebpackError = require("../errors/WebpackError");
10
+ const { ABSOLUTE_PATH_REGEXP } = require("../util/identifier");
10
11
  const ProvideForSharedDependency = require("./ProvideForSharedDependency");
11
12
  const ProvideSharedDependency = require("./ProvideSharedDependency");
12
13
  const ProvideSharedModuleFactory = require("./ProvideSharedModuleFactory");
@@ -35,6 +36,7 @@ class ProvideSharedPlugin {
35
36
  * @param {ProvideSharedPluginOptions} options options
36
37
  */
37
38
  constructor(options) {
39
+ /** @type {ProvideSharedPluginOptions} */
38
40
  this.options = options;
39
41
  }
40
42
 
@@ -100,13 +102,13 @@ class ProvideSharedPlugin {
100
102
  /** @type {Map<string, ProvideOptions>} */
101
103
  const prefixMatchProvides = new Map();
102
104
  for (const [request, config] of provides) {
103
- if (/^(?:\/|[A-Z]:\\|\\\\|\.\.?(?:\/|$))/i.test(request)) {
105
+ if (/^\.\.?(?:\/|$)/.test(request)) {
104
106
  // relative request
105
107
  resolvedProvideMap.set(request, {
106
108
  config,
107
109
  version: config.version
108
110
  });
109
- } else if (/^(?:\/|[A-Z]:\\|\\\\)/i.test(request)) {
111
+ } else if (ABSOLUTE_PATH_REGEXP.test(request)) {
110
112
  // absolute path
111
113
  resolvedProvideMap.set(request, {
112
114
  config,
@@ -67,8 +67,11 @@ class SharePlugin {
67
67
  eager: options.eager
68
68
  }
69
69
  }));
70
+ /** @type {string | undefined} */
70
71
  this._shareScope = options.shareScope;
72
+ /** @type {Record<string, ConsumesConfig>[]} */
71
73
  this._consumes = consumes;
74
+ /** @type {Record<string, ProvidesConfig>[]} */
72
75
  this._provides = provides;
73
76
  }
74
77
 
@@ -69,16 +69,18 @@ class ShareRuntimeModule extends RuntimeModule {
69
69
  }
70
70
  }
71
71
  }
72
+ const cst = runtimeTemplate.renderConst();
73
+ const lt = runtimeTemplate.renderLet();
72
74
  return Template.asString([
73
75
  `${RuntimeGlobals.shareScopeMap} = {};`,
74
- "var initPromises = {};",
75
- "var initTokens = {};",
76
+ `${cst} initPromises = {};`,
77
+ `${cst} initTokens = {};`,
76
78
  `${RuntimeGlobals.initializeSharing} = ${runtimeTemplate.basicFunction(
77
79
  "name, initScope",
78
80
  [
79
81
  "if(!initScope) initScope = [];",
80
82
  "// handling circular init calls",
81
- "var initToken = initTokens[name];",
83
+ `${lt} initToken = initTokens[name];`,
82
84
  "if(!initToken) initToken = initTokens[name] = {};",
83
85
  "if(initScope.indexOf(initToken) >= 0) return;",
84
86
  "initScope.push(initToken);",
@@ -87,43 +89,43 @@ class ShareRuntimeModule extends RuntimeModule {
87
89
  "// creates a new share scope if needed",
88
90
  `if(!${RuntimeGlobals.hasOwnProperty}(${RuntimeGlobals.shareScopeMap}, name)) ${RuntimeGlobals.shareScopeMap}[name] = {};`,
89
91
  "// runs all init snippets from all modules reachable",
90
- `var scope = ${RuntimeGlobals.shareScopeMap}[name];`,
91
- `var warn = ${
92
+ `${cst} scope = ${RuntimeGlobals.shareScopeMap}[name];`,
93
+ `${cst} warn = ${
92
94
  ignoreBrowserWarnings
93
95
  ? runtimeTemplate.basicFunction("", "")
94
96
  : runtimeTemplate.basicFunction("msg", [
95
97
  'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
96
98
  ])
97
99
  };`,
98
- `var uniqueName = ${JSON.stringify(uniqueName || undefined)};`,
99
- `var register = ${runtimeTemplate.basicFunction(
100
+ `${cst} uniqueName = ${JSON.stringify(uniqueName || undefined)};`,
101
+ `${cst} register = ${runtimeTemplate.basicFunction(
100
102
  "name, version, factory, eager",
101
103
  [
102
- "var versions = scope[name] = scope[name] || {};",
103
- "var activeVersion = versions[version];",
104
+ `${cst} versions = ${runtimeTemplate.assignOr("scope[name]", "{}")};`,
105
+ `${cst} activeVersion = versions[version];`,
104
106
  "if(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };"
105
107
  ]
106
108
  )};`,
107
- `var initExternal = ${runtimeTemplate.basicFunction("id", [
108
- `var handleError = ${runtimeTemplate.expressionFunction(
109
+ `${cst} initExternal = ${runtimeTemplate.basicFunction("id", [
110
+ `${cst} handleError = ${runtimeTemplate.expressionFunction(
109
111
  'warn("Initialization of sharing external failed: " + err)',
110
112
  "err"
111
113
  )};`,
112
114
  "try {",
113
115
  Template.indent([
114
- `var module = ${RuntimeGlobals.require}(id);`,
116
+ `${cst} module = ${RuntimeGlobals.require}(id);`,
115
117
  "if(!module) return;",
116
- `var initFn = ${runtimeTemplate.returningFunction(
118
+ `${cst} initFn = ${runtimeTemplate.returningFunction(
117
119
  `module && module.init && module.init(${RuntimeGlobals.shareScopeMap}[name], initScope)`,
118
120
  "module"
119
121
  )}`,
120
122
  "if(module.then) return promises.push(module.then(initFn, handleError));",
121
- "var initResult = initFn(module);",
122
- "if(initResult && initResult.then) return promises.push(initResult['catch'](handleError));"
123
+ `${cst} initResult = initFn(module);`,
124
+ `if(${runtimeTemplate.optionalChaining("initResult", "then")}) return promises.push(initResult['catch'](handleError));`
123
125
  ]),
124
126
  "} catch(err) { handleError(err); }"
125
127
  ])}`,
126
- "var promises = [];",
128
+ `${cst} promises = [];`,
127
129
  "switch(name) {",
128
130
  ...[...initCodePerScope]
129
131
  .sort(([a], [b]) => compareStrings(a, b))
@@ -7,6 +7,7 @@
7
7
 
8
8
  const ModuleNotFoundError = require("../errors/ModuleNotFoundError");
9
9
  const LazySet = require("../util/LazySet");
10
+ const { ABSOLUTE_PATH_REGEXP } = require("../util/identifier");
10
11
 
11
12
  /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
12
13
  /** @typedef {import("../Compilation")} Compilation */
@@ -80,7 +81,7 @@ module.exports.resolveMatchedConfigs = (compilation, configs) => {
80
81
  }
81
82
  );
82
83
  });
83
- } else if (/^(?:\/|[a-z]:\\|\\\\)/i.test(request)) {
84
+ } else if (ABSOLUTE_PATH_REGEXP.test(request)) {
84
85
  // absolute path
85
86
  resolved.set(request, config);
86
87
  } else if (request.endsWith("/")) {
@@ -28,7 +28,7 @@ const RE_CUSTOM_PROTOCOL = /^(?:(?:git\+)?(?:ssh|https?|file)|git):\/\//i;
28
28
  const RE_URL_HASH_VERSION = /#(?:semver:)?(.+)/;
29
29
 
30
30
  // Simple hostname validate
31
- const RE_HOSTNAME = /^(?:[^/.]+(?:\.[^/]+)+|localhost)$/;
31
+ const RE_HOSTNAME = /^(?:[^/.]+(?:\.[^/.]+)+|localhost)$/;
32
32
 
33
33
  // For hostname with colon. eg: ssh://user@github.com:foo/bar
34
34
  const RE_HOSTNAME_WITH_COLON =
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const util = require("util");
9
+ const { version: WEBPACK_VERSION } = require("../../package.json");
9
10
  const { WEBPACK_MODULE_TYPE_RUNTIME } = require("../ModuleTypeConstants");
10
11
  const ModuleDependency = require("../dependencies/ModuleDependency");
11
12
  const { LogType } = require("../logging/Logger");
@@ -418,9 +419,8 @@ const mapObject = (obj, fn) => {
418
419
 
419
420
  /**
420
421
  * Count with children.
421
- * @template T
422
422
  * @param {Compilation} compilation the compilation
423
- * @param {(compilation: Compilation, name: string) => T[]} getItems get items
423
+ * @param {(compilation: Compilation, name: string) => { length: number }} getItems get items
424
424
  * @returns {number} total number
425
425
  */
426
426
  const countWithChildren = (compilation, getItems) => {
@@ -753,7 +753,7 @@ const SIMPLE_EXTRACTORS = {
753
753
  object.hash = compilation.hash;
754
754
  },
755
755
  version: (object) => {
756
- object.version = require("../../package.json").version;
756
+ object.version = WEBPACK_VERSION;
757
757
  },
758
758
  env: (object, compilation, context, { _env }) => {
759
759
  object.env = _env;
@@ -1010,12 +1010,10 @@ const SIMPLE_EXTRACTORS = {
1010
1010
  const { type, cachedGetWarnings } = context;
1011
1011
  object.warningsCount = countWithChildren(compilation, (c, childType) => {
1012
1012
  if (
1013
- !warningsFilter &&
1014
1013
  /** @type {KnownNormalizedStatsOptions["warningsFilter"]} */
1015
1014
  (warningsFilter).length === 0
1016
1015
  ) {
1017
- // Type is wrong, because we don't need the real value for counting
1018
- return /** @type {EXPECTED_ANY[]} */ (cachedGetWarnings(c));
1016
+ return cachedGetWarnings(c);
1019
1017
  }
1020
1018
  return factory
1021
1019
  .create(`${type}${childType}.warnings`, cachedGetWarnings(c), context)