webpack 5.76.1 → 5.88.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.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (436) hide show
  1. package/README.md +10 -4
  2. package/bin/webpack.js +26 -2
  3. package/hot/dev-server.js +2 -1
  4. package/hot/lazy-compilation-node.js +10 -0
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +22 -0
  8. package/hot/only-dev-server.js +2 -1
  9. package/hot/poll.js +3 -0
  10. package/hot/signal.js +4 -0
  11. package/lib/APIPlugin.js +174 -116
  12. package/lib/AsyncDependenciesBlock.js +13 -5
  13. package/lib/AutomaticPrefetchPlugin.js +1 -0
  14. package/lib/BannerPlugin.js +4 -0
  15. package/lib/CacheFacade.js +4 -0
  16. package/lib/CaseSensitiveModulesWarning.js +3 -1
  17. package/lib/Chunk.js +36 -18
  18. package/lib/ChunkGraph.js +4 -4
  19. package/lib/ChunkGroup.js +25 -10
  20. package/lib/CleanPlugin.js +30 -7
  21. package/lib/CodeGenerationResults.js +2 -2
  22. package/lib/CompatibilityPlugin.js +85 -46
  23. package/lib/Compilation.js +17 -8
  24. package/lib/Compiler.js +12 -8
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +79 -44
  28. package/lib/ContextModule.js +20 -6
  29. package/lib/ContextModuleFactory.js +2 -1
  30. package/lib/ContextReplacementPlugin.js +13 -0
  31. package/lib/CssModule.js +169 -0
  32. package/lib/DefinePlugin.js +152 -86
  33. package/lib/DelegatedModule.js +22 -4
  34. package/lib/DelegatedModuleFactoryPlugin.js +6 -0
  35. package/lib/DependenciesBlock.js +17 -1
  36. package/lib/Dependency.js +19 -5
  37. package/lib/DllEntryPlugin.js +16 -1
  38. package/lib/DllModule.js +17 -2
  39. package/lib/DllModuleFactory.js +1 -1
  40. package/lib/DllReferencePlugin.js +13 -1
  41. package/lib/Entrypoint.js +1 -1
  42. package/lib/ErrorHelpers.js +62 -22
  43. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  44. package/lib/ExportsInfo.js +20 -3
  45. package/lib/ExportsInfoApiPlugin.js +30 -14
  46. package/lib/ExternalModule.js +30 -9
  47. package/lib/FileSystemInfo.js +9 -1
  48. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  49. package/lib/FlagDependencyExportsPlugin.js +336 -348
  50. package/lib/FlagDependencyUsagePlugin.js +9 -9
  51. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  52. package/lib/HookWebpackError.js +1 -1
  53. package/lib/HotModuleReplacementPlugin.js +60 -46
  54. package/lib/IgnoreErrorModuleFactory.js +1 -1
  55. package/lib/InitFragment.js +28 -5
  56. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  57. package/lib/LibManifestPlugin.js +22 -5
  58. package/lib/LoaderOptionsPlugin.js +12 -2
  59. package/lib/MainTemplate.js +2 -2
  60. package/lib/Module.js +44 -12
  61. package/lib/ModuleBuildError.js +9 -0
  62. package/lib/ModuleDependencyError.js +4 -2
  63. package/lib/ModuleDependencyWarning.js +4 -2
  64. package/lib/ModuleError.js +9 -0
  65. package/lib/ModuleFactory.js +1 -1
  66. package/lib/ModuleFilenameHelpers.js +114 -4
  67. package/lib/ModuleGraph.js +33 -23
  68. package/lib/ModuleGraphConnection.js +19 -6
  69. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  70. package/lib/ModuleNotFoundError.js +5 -2
  71. package/lib/ModuleParseError.js +9 -0
  72. package/lib/ModuleProfile.js +1 -0
  73. package/lib/ModuleRestoreError.js +2 -0
  74. package/lib/ModuleStoreError.js +2 -1
  75. package/lib/ModuleTypeConstants.js +169 -0
  76. package/lib/ModuleWarning.js +9 -0
  77. package/lib/MultiWatching.js +4 -0
  78. package/lib/NodeStuffPlugin.js +65 -35
  79. package/lib/NormalModule.js +12 -2
  80. package/lib/NormalModuleFactory.js +56 -8
  81. package/lib/NormalModuleReplacementPlugin.js +5 -3
  82. package/lib/NullFactory.js +1 -1
  83. package/lib/PrefetchPlugin.js +4 -0
  84. package/lib/ProgressPlugin.js +71 -15
  85. package/lib/ProvidePlugin.js +30 -14
  86. package/lib/RawModule.js +13 -2
  87. package/lib/RecordIdsPlugin.js +4 -4
  88. package/lib/RequireJsStuffPlugin.js +22 -15
  89. package/lib/RuntimeGlobals.js +5 -0
  90. package/lib/RuntimeModule.js +12 -11
  91. package/lib/RuntimePlugin.js +10 -3
  92. package/lib/RuntimeTemplate.js +29 -11
  93. package/lib/SelfModuleFactory.js +12 -0
  94. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  95. package/lib/SourceMapDevToolPlugin.js +47 -11
  96. package/lib/Template.js +5 -3
  97. package/lib/UseStrictPlugin.js +29 -11
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  99. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  100. package/lib/WatchIgnorePlugin.js +4 -0
  101. package/lib/WebpackError.js +14 -5
  102. package/lib/WebpackIsIncludedPlugin.js +22 -13
  103. package/lib/WebpackOptionsApply.js +41 -44
  104. package/lib/WebpackOptionsDefaulter.js +10 -3
  105. package/lib/asset/AssetGenerator.js +24 -9
  106. package/lib/asset/AssetModulesPlugin.js +28 -12
  107. package/lib/asset/AssetParser.js +15 -7
  108. package/lib/asset/AssetSourceParser.js +8 -3
  109. package/lib/asset/RawDataUrlModule.js +15 -4
  110. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  111. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  112. package/lib/cache/IdleFileCachePlugin.js +2 -1
  113. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  114. package/lib/cache/PackFileCacheStrategy.js +42 -15
  115. package/lib/cache/ResolverCachePlugin.js +3 -0
  116. package/lib/config/browserslistTargetHandler.js +10 -10
  117. package/lib/config/defaults.js +306 -105
  118. package/lib/config/normalization.js +110 -71
  119. package/lib/config/target.js +37 -10
  120. package/lib/container/ContainerEntryModule.js +11 -1
  121. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  122. package/lib/container/ContainerExposedDependency.js +9 -0
  123. package/lib/container/ContainerPlugin.js +3 -1
  124. package/lib/container/FallbackDependency.js +13 -0
  125. package/lib/container/FallbackItemDependency.js +3 -0
  126. package/lib/container/FallbackModule.js +12 -2
  127. package/lib/container/FallbackModuleFactory.js +1 -1
  128. package/lib/container/RemoteModule.js +11 -1
  129. package/lib/container/RemoteRuntimeModule.js +3 -2
  130. package/lib/container/RemoteToExternalDependency.js +3 -0
  131. package/lib/css/CssExportsGenerator.js +9 -0
  132. package/lib/css/CssGenerator.js +5 -1
  133. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  134. package/lib/css/CssModulesPlugin.js +253 -74
  135. package/lib/css/CssParser.js +697 -282
  136. package/lib/css/walkCssTokens.js +269 -138
  137. package/lib/debug/ProfilingPlugin.js +33 -12
  138. package/lib/dependencies/AMDDefineDependency.js +54 -10
  139. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  140. package/lib/dependencies/AMDPlugin.js +33 -20
  141. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  142. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  143. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  144. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  145. package/lib/dependencies/AMDRequireDependency.js +16 -1
  146. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  147. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  148. package/lib/dependencies/CachedConstDependency.js +14 -0
  149. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  150. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  151. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  152. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  153. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  154. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  155. package/lib/dependencies/CommonJsPlugin.js +51 -26
  156. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  157. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  158. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  159. package/lib/dependencies/ConstDependency.js +11 -2
  160. package/lib/dependencies/ContextDependency.js +15 -2
  161. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  162. package/lib/dependencies/ContextElementDependency.js +8 -0
  163. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  164. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  165. package/lib/dependencies/CssExportDependency.js +8 -0
  166. package/lib/dependencies/CssImportDependency.js +55 -3
  167. package/lib/dependencies/CssLocalIdentifierDependency.js +15 -1
  168. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  169. package/lib/dependencies/CssUrlDependency.js +46 -16
  170. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  171. package/lib/dependencies/DllEntryDependency.js +14 -0
  172. package/lib/dependencies/DynamicExports.js +10 -6
  173. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  174. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  175. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  176. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  177. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  178. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  179. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  180. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  181. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  182. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  183. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  184. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  185. package/lib/dependencies/HarmonyExports.js +11 -5
  186. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  187. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  188. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  189. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  190. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  191. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  192. package/lib/dependencies/ImportContextDependency.js +15 -0
  193. package/lib/dependencies/ImportDependency.js +15 -4
  194. package/lib/dependencies/ImportEagerDependency.js +7 -4
  195. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  196. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  197. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  198. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  199. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  200. package/lib/dependencies/ImportParserPlugin.js +83 -25
  201. package/lib/dependencies/ImportPlugin.js +21 -7
  202. package/lib/dependencies/ImportWeakDependency.js +7 -4
  203. package/lib/dependencies/JsonExportsDependency.js +9 -1
  204. package/lib/dependencies/LocalModule.js +16 -0
  205. package/lib/dependencies/LocalModuleDependency.js +15 -0
  206. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  207. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  208. package/lib/dependencies/ModuleDependency.js +9 -1
  209. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  210. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  211. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  212. package/lib/dependencies/PrefetchDependency.js +3 -0
  213. package/lib/dependencies/ProvidedDependency.js +14 -2
  214. package/lib/dependencies/PureExpressionDependency.js +10 -1
  215. package/lib/dependencies/RequireContextDependency.js +6 -0
  216. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  217. package/lib/dependencies/RequireContextPlugin.js +19 -6
  218. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  219. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  220. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  221. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  222. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  223. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  224. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  225. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  226. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  227. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  228. package/lib/dependencies/RequireResolveDependency.js +6 -0
  229. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  230. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  231. package/lib/dependencies/StaticExportsDependency.js +8 -0
  232. package/lib/dependencies/SystemPlugin.js +48 -21
  233. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  234. package/lib/dependencies/URLDependency.js +13 -4
  235. package/lib/dependencies/URLPlugin.js +31 -18
  236. package/lib/dependencies/UnsupportedDependency.js +13 -0
  237. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  238. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  239. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  240. package/lib/dependencies/WorkerDependency.js +47 -3
  241. package/lib/dependencies/WorkerPlugin.js +105 -32
  242. package/lib/dependencies/getFunctionExpression.js +7 -0
  243. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  244. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  245. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  246. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  247. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  248. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  249. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  250. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  251. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  252. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  253. package/lib/ids/IdHelpers.js +6 -0
  254. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  255. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  256. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  257. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  258. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  259. package/lib/index.js +8 -0
  260. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  261. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  262. package/lib/javascript/ChunkHelpers.js +2 -2
  263. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  264. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  265. package/lib/javascript/JavascriptModulesPlugin.js +194 -194
  266. package/lib/javascript/JavascriptParser.js +941 -256
  267. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  268. package/lib/javascript/StartupHelpers.js +2 -2
  269. package/lib/json/JsonData.js +26 -1
  270. package/lib/json/JsonGenerator.js +21 -7
  271. package/lib/json/JsonModulesPlugin.js +14 -5
  272. package/lib/json/JsonParser.js +27 -13
  273. package/lib/library/AbstractLibraryPlugin.js +4 -0
  274. package/lib/library/AmdLibraryPlugin.js +22 -6
  275. package/lib/library/AssignLibraryPlugin.js +6 -4
  276. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  277. package/lib/library/ModuleLibraryPlugin.js +8 -4
  278. package/lib/library/SystemLibraryPlugin.js +1 -0
  279. package/lib/library/UmdLibraryPlugin.js +4 -0
  280. package/lib/logging/runtime.js +1 -1
  281. package/lib/logging/truncateArgs.js +4 -0
  282. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  283. package/lib/node/NodeTargetPlugin.js +3 -0
  284. package/lib/node/NodeTemplatePlugin.js +10 -2
  285. package/lib/node/NodeWatchFileSystem.js +1 -1
  286. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  287. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  288. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  289. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  290. package/lib/node/nodeConsole.js +2 -4
  291. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  292. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  293. package/lib/optimize/ConcatenatedModule.js +8 -6
  294. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  295. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  296. package/lib/optimize/InnerGraph.js +5 -5
  297. package/lib/optimize/InnerGraphPlugin.js +57 -48
  298. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  299. package/lib/optimize/MangleExportsPlugin.js +1 -1
  300. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  301. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  302. package/lib/optimize/RealContentHashPlugin.js +86 -30
  303. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  304. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  305. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  306. package/lib/optimize/SplitChunksPlugin.js +71 -31
  307. package/lib/performance/SizeLimitsPlugin.js +7 -4
  308. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  309. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  310. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  311. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  312. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  313. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  314. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  315. package/lib/rules/RuleSetCompiler.js +3 -3
  316. package/lib/rules/UseEffectRulePlugin.js +6 -4
  317. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  318. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  319. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  320. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  321. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  322. package/lib/runtime/CompatRuntimeModule.js +7 -2
  323. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  324. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  325. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  326. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  327. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  328. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  329. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  330. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  331. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  332. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  333. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  334. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  335. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  336. package/lib/runtime/NonceRuntimeModule.js +1 -1
  337. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  338. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  339. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  340. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  341. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  342. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  343. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  344. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  345. package/lib/schemes/DataUriPlugin.js +16 -3
  346. package/lib/schemes/HttpUriPlugin.js +38 -0
  347. package/lib/serialization/ArraySerializer.js +22 -6
  348. package/lib/serialization/BinaryMiddleware.js +164 -1
  349. package/lib/serialization/DateObjectSerializer.js +15 -4
  350. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  351. package/lib/serialization/FileMiddleware.js +17 -0
  352. package/lib/serialization/MapObjectSerializer.js +24 -8
  353. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  354. package/lib/serialization/ObjectMiddleware.js +33 -2
  355. package/lib/serialization/PlainObjectSerializer.js +23 -12
  356. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  357. package/lib/serialization/SetObjectSerializer.js +21 -6
  358. package/lib/serialization/types.js +1 -1
  359. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  360. package/lib/sharing/ConsumeSharedModule.js +13 -2
  361. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  362. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  363. package/lib/sharing/ProvideSharedDependency.js +17 -0
  364. package/lib/sharing/ProvideSharedModule.js +11 -1
  365. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  366. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  367. package/lib/sharing/ShareRuntimeModule.js +19 -9
  368. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  369. package/lib/sharing/utils.js +320 -7
  370. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  371. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  372. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  373. package/lib/util/AsyncQueue.js +4 -2
  374. package/lib/util/LazySet.js +10 -2
  375. package/lib/util/MapHelpers.js +19 -5
  376. package/lib/util/ParallelismFactorCalculator.js +10 -0
  377. package/lib/util/Semaphore.js +1 -1
  378. package/lib/util/StackedCacheMap.js +6 -0
  379. package/lib/util/StringXor.js +51 -0
  380. package/lib/util/binarySearchBounds.js +49 -0
  381. package/lib/util/compileBooleanMatcher.js +31 -0
  382. package/lib/util/createHash.js +35 -13
  383. package/lib/util/deprecation.js +18 -3
  384. package/lib/util/deterministicGrouping.js +50 -11
  385. package/lib/util/findGraphRoots.js +4 -2
  386. package/lib/util/hash/md4.js +2 -2
  387. package/lib/util/hash/xxhash64.js +1 -1
  388. package/lib/util/identifier.js +4 -0
  389. package/lib/util/internalSerializables.js +1 -0
  390. package/lib/util/makeSerializable.js +7 -0
  391. package/lib/util/memoize.js +3 -3
  392. package/lib/util/numberHash.js +75 -21
  393. package/lib/util/processAsyncTree.js +7 -1
  394. package/lib/util/propertyAccess.js +9 -54
  395. package/lib/util/propertyName.js +79 -0
  396. package/lib/util/registerExternalSerializer.js +1 -1
  397. package/lib/util/runtime.js +14 -1
  398. package/lib/util/semver.js +1 -1
  399. package/lib/util/serialization.js +10 -0
  400. package/lib/util/smartGrouping.js +1 -1
  401. package/lib/validateSchema.js +6 -2
  402. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  403. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  404. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  405. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  406. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  407. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  408. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  409. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  410. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  411. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  412. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  413. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  414. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  415. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  416. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  417. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  418. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  419. package/lib/webpack.js +12 -3
  420. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  421. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  422. package/module.d.ts +55 -37
  423. package/package.json +59 -56
  424. package/schemas/WebpackOptions.check.js +1 -1
  425. package/schemas/WebpackOptions.json +132 -5
  426. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  427. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  428. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  429. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  430. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  431. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  432. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  433. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  434. package/schemas/plugins/css/CssParserOptions.json +1 -1
  435. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  436. package/types.d.ts +1608 -667
@@ -9,13 +9,25 @@ const DllModuleFactory = require("./DllModuleFactory");
9
9
  const DllEntryDependency = require("./dependencies/DllEntryDependency");
10
10
  const EntryDependency = require("./dependencies/EntryDependency");
11
11
 
12
+ /** @typedef {import("./Compiler")} Compiler */
13
+
12
14
  class DllEntryPlugin {
15
+ /**
16
+ * @param {string} context context
17
+ * @param {string[]} entries entry names
18
+ * @param {TODO} options options
19
+ */
13
20
  constructor(context, entries, options) {
14
21
  this.context = context;
15
22
  this.entries = entries;
16
23
  this.options = options;
17
24
  }
18
25
 
26
+ /**
27
+ * Apply the plugin
28
+ * @param {Compiler} compiler the compiler instance
29
+ * @returns {void}
30
+ */
19
31
  apply(compiler) {
20
32
  compiler.hooks.compilation.tap(
21
33
  "DllEntryPlugin",
@@ -46,7 +58,10 @@ class DllEntryPlugin {
46
58
  this.options.name
47
59
  ),
48
60
  this.options,
49
- callback
61
+ error => {
62
+ if (error) return callback(error);
63
+ callback();
64
+ }
50
65
  );
51
66
  });
52
67
  }
package/lib/DllModule.js CHANGED
@@ -7,6 +7,7 @@
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
9
  const Module = require("./Module");
10
+ const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
10
11
  const RuntimeGlobals = require("./RuntimeGlobals");
11
12
  const makeSerializable = require("./util/makeSerializable");
12
13
 
@@ -14,6 +15,7 @@ const makeSerializable = require("./util/makeSerializable");
14
15
  /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
15
16
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
16
17
  /** @typedef {import("./Compilation")} Compilation */
18
+ /** @typedef {import("./Dependency")} Dependency */
17
19
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
18
20
  /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
19
21
  /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
@@ -24,6 +26,8 @@ const makeSerializable = require("./util/makeSerializable");
24
26
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
25
27
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
26
28
  /** @typedef {import("./WebpackError")} WebpackError */
29
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
30
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
27
31
  /** @typedef {import("./util/Hash")} Hash */
28
32
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
29
33
 
@@ -34,8 +38,13 @@ const RUNTIME_REQUIREMENTS = new Set([
34
38
  ]);
35
39
 
36
40
  class DllModule extends Module {
41
+ /**
42
+ * @param {string} context context path
43
+ * @param {Dependency[]} dependencies dependencies
44
+ * @param {string} name name
45
+ */
37
46
  constructor(context, dependencies, name) {
38
- super("javascript/dynamic", context);
47
+ super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, context);
39
48
 
40
49
  // Info from Factory
41
50
  this.dependencies = dependencies;
@@ -86,7 +95,7 @@ class DllModule extends Module {
86
95
  const sources = new Map();
87
96
  sources.set(
88
97
  "javascript",
89
- new RawSource("module.exports = __webpack_require__;")
98
+ new RawSource(`module.exports = ${RuntimeGlobals.require};`)
90
99
  );
91
100
  return {
92
101
  sources,
@@ -121,11 +130,17 @@ class DllModule extends Module {
121
130
  super.updateHash(hash, context);
122
131
  }
123
132
 
133
+ /**
134
+ * @param {ObjectSerializerContext} context context
135
+ */
124
136
  serialize(context) {
125
137
  context.write(this.name);
126
138
  super.serialize(context);
127
139
  }
128
140
 
141
+ /**
142
+ * @param {ObjectDeserializerContext} context context
143
+ */
129
144
  deserialize(context) {
130
145
  this.name = context.read();
131
146
  super.deserialize(context);
@@ -19,7 +19,7 @@ class DllModuleFactory extends ModuleFactory {
19
19
  }
20
20
  /**
21
21
  * @param {ModuleFactoryCreateData} data data object
22
- * @param {function(Error=, ModuleFactoryResult=): void} callback callback
22
+ * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
23
23
  * @returns {void}
24
24
  */
25
25
  create(data, callback) {
@@ -16,6 +16,7 @@ const makePathsRelative = require("./util/identifier").makePathsRelative;
16
16
  /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
17
17
  /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptions} DllReferencePluginOptions */
18
18
  /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsManifest} DllReferencePluginOptionsManifest */
19
+ /** @typedef {import("./Compiler")} Compiler */
19
20
 
20
21
  const validate = createSchemaValidation(
21
22
  require("../schemas/plugins/DllReferencePlugin.check.js"),
@@ -37,6 +38,11 @@ class DllReferencePlugin {
37
38
  this._compilationData = new WeakMap();
38
39
  }
39
40
 
41
+ /**
42
+ * Apply the plugin
43
+ * @param {Compiler} compiler the compiler instance
44
+ * @returns {void}
45
+ */
40
46
  apply(compiler) {
41
47
  compiler.hooks.compilation.tap(
42
48
  "DllReferencePlugin",
@@ -140,7 +146,9 @@ class DllReferencePlugin {
140
146
  // If there was an error parsing the manifest file, add the
141
147
  // error as a compilation error to make the compilation fail.
142
148
  if (data.error) {
143
- compilation.errors.push(data.error);
149
+ compilation.errors.push(
150
+ /** @type {DllManifestError} */ (data.error)
151
+ );
144
152
  }
145
153
  compilation.fileDependencies.add(manifest);
146
154
  }
@@ -151,6 +159,10 @@ class DllReferencePlugin {
151
159
  }
152
160
 
153
161
  class DllManifestError extends WebpackError {
162
+ /**
163
+ * @param {string} filename filename of the manifest
164
+ * @param {string} message error message
165
+ */
154
166
  constructor(filename, message) {
155
167
  super();
156
168
 
package/lib/Entrypoint.js CHANGED
@@ -83,7 +83,7 @@ class Entrypoint extends ChunkGroup {
83
83
  * @returns {Chunk} chunk
84
84
  */
85
85
  getEntrypointChunk() {
86
- return this._entrypointChunk;
86
+ return /** @type {Chunk} */ (this._entrypointChunk);
87
87
  }
88
88
 
89
89
  /**
@@ -9,36 +9,58 @@ const loaderFlag = "LOADER_EXECUTION";
9
9
 
10
10
  const webpackOptionsFlag = "WEBPACK_OPTIONS";
11
11
 
12
- exports.cutOffByFlag = (stack, flag) => {
13
- stack = stack.split("\n");
14
- for (let i = 0; i < stack.length; i++) {
15
- if (stack[i].includes(flag)) {
16
- stack.length = i;
12
+ /**
13
+ * @param {string} stack stack trace
14
+ * @param {string} flag flag to cut off
15
+ * @returns {string} stack trace without the specified flag included
16
+ */
17
+ const cutOffByFlag = (stack, flag) => {
18
+ const errorStack = stack.split("\n");
19
+ for (let i = 0; i < errorStack.length; i++) {
20
+ if (errorStack[i].includes(flag)) {
21
+ errorStack.length = i;
17
22
  }
18
23
  }
19
- return stack.join("\n");
24
+ return errorStack.join("\n");
20
25
  };
21
26
 
22
- exports.cutOffLoaderExecution = stack =>
23
- exports.cutOffByFlag(stack, loaderFlag);
27
+ /**
28
+ * @param {string} stack stack trace
29
+ * @returns {string} stack trace without the loader execution flag included
30
+ */
31
+ const cutOffLoaderExecution = stack => cutOffByFlag(stack, loaderFlag);
24
32
 
25
- exports.cutOffWebpackOptions = stack =>
26
- exports.cutOffByFlag(stack, webpackOptionsFlag);
33
+ /**
34
+ * @param {string} stack stack trace
35
+ * @returns {string} stack trace without the webpack options flag included
36
+ */
37
+ const cutOffWebpackOptions = stack => cutOffByFlag(stack, webpackOptionsFlag);
27
38
 
28
- exports.cutOffMultilineMessage = (stack, message) => {
29
- stack = stack.split("\n");
30
- message = message.split("\n");
39
+ /**
40
+ * @param {string} stack stack trace
41
+ * @param {string} message error message
42
+ * @returns {string} stack trace without the message included
43
+ */
44
+ const cutOffMultilineMessage = (stack, message) => {
45
+ const stackSplitByLines = stack.split("\n");
46
+ const messageSplitByLines = message.split("\n");
31
47
 
48
+ /** @type {string[]} */
32
49
  const result = [];
33
50
 
34
- stack.forEach((line, idx) => {
35
- if (!line.includes(message[idx])) result.push(line);
51
+ stackSplitByLines.forEach((line, idx) => {
52
+ if (!line.includes(messageSplitByLines[idx])) result.push(line);
36
53
  });
37
54
 
38
55
  return result.join("\n");
39
56
  };
40
57
 
41
- exports.cutOffMessage = (stack, message) => {
58
+ /**
59
+ * @param {string} stack stack trace
60
+ * @param {string} message error message
61
+ * @returns {string} stack trace without the message included
62
+ */
63
+ const cutOffMessage = (stack, message) => {
42
64
  const nextLine = stack.indexOf("\n");
43
65
  if (nextLine === -1) {
44
66
  return stack === message ? "" : stack;
@@ -48,14 +70,32 @@ exports.cutOffMessage = (stack, message) => {
48
70
  }
49
71
  };
50
72
 
51
- exports.cleanUp = (stack, message) => {
52
- stack = exports.cutOffLoaderExecution(stack);
53
- stack = exports.cutOffMessage(stack, message);
73
+ /**
74
+ * @param {string} stack stack trace
75
+ * @param {string} message error message
76
+ * @returns {string} stack trace without the loader execution flag and message included
77
+ */
78
+ const cleanUp = (stack, message) => {
79
+ stack = cutOffLoaderExecution(stack);
80
+ stack = cutOffMessage(stack, message);
54
81
  return stack;
55
82
  };
56
83
 
57
- exports.cleanUpWebpackOptions = (stack, message) => {
58
- stack = exports.cutOffWebpackOptions(stack);
59
- stack = exports.cutOffMultilineMessage(stack, message);
84
+ /**
85
+ * @param {string} stack stack trace
86
+ * @param {string} message error message
87
+ * @returns {string} stack trace without the webpack options flag and message included
88
+ */
89
+ const cleanUpWebpackOptions = (stack, message) => {
90
+ stack = cutOffWebpackOptions(stack);
91
+ stack = cutOffMultilineMessage(stack, message);
60
92
  return stack;
61
93
  };
94
+
95
+ exports.cutOffByFlag = cutOffByFlag;
96
+ exports.cutOffLoaderExecution = cutOffLoaderExecution;
97
+ exports.cutOffWebpackOptions = cutOffWebpackOptions;
98
+ exports.cutOffMultilineMessage = cutOffMultilineMessage;
99
+ exports.cutOffMessage = cutOffMessage;
100
+ exports.cleanUp = cleanUp;
101
+ exports.cleanUpWebpackOptions = cleanUpWebpackOptions;
@@ -48,7 +48,9 @@ class EvalSourceMapDevToolPlugin {
48
48
  options = inputOptions;
49
49
  }
50
50
  this.sourceMapComment =
51
- options.append || "//# sourceURL=[module]\n//# sourceMappingURL=[url]";
51
+ options.append && typeof options.append !== "function"
52
+ ? options.append
53
+ : "//# sourceURL=[module]\n//# sourceMappingURL=[url]";
52
54
  this.moduleFilenameTemplate =
53
55
  options.moduleFilenameTemplate ||
54
56
  "webpack://[namespace]/[resource-path]?[hash]";
@@ -80,6 +82,10 @@ class EvalSourceMapDevToolPlugin {
80
82
  return cachedSource;
81
83
  }
82
84
 
85
+ /**
86
+ * @param {Source} r result
87
+ * @returns {Source} result
88
+ */
83
89
  const result = r => {
84
90
  cache.set(source, r);
85
91
  return r;
@@ -158,7 +164,8 @@ class EvalSourceMapDevToolPlugin {
158
164
  }
159
165
  sourceMap.sourceRoot = options.sourceRoot || "";
160
166
  const moduleId = chunkGraph.getModuleId(m);
161
- sourceMap.file = `${moduleId}.js`;
167
+ sourceMap.file =
168
+ typeof moduleId === "number" ? `${moduleId}.js` : moduleId;
162
169
 
163
170
  const footer =
164
171
  this.sourceMapComment.replace(
@@ -14,6 +14,8 @@ const { forEachRuntime } = require("./util/runtime");
14
14
  /** @typedef {import("./Module")} Module */
15
15
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
16
16
  /** @typedef {import("./ModuleGraphConnection")} ModuleGraphConnection */
17
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
19
  /** @typedef {import("./util/Hash")} Hash */
18
20
 
19
21
  /** @typedef {typeof UsageState.OnlyPropertiesUsed | typeof UsageState.NoInfo | typeof UsageState.Unknown | typeof UsageState.Used} RuntimeUsageStateType */
@@ -44,6 +46,9 @@ class RestoreProvidedData {
44
46
  this.otherTerminalBinding = otherTerminalBinding;
45
47
  }
46
48
 
49
+ /**
50
+ * @param {ObjectSerializerContext} context context
51
+ */
47
52
  serialize({ write }) {
48
53
  write(this.exports);
49
54
  write(this.otherProvided);
@@ -51,6 +56,10 @@ class RestoreProvidedData {
51
56
  write(this.otherTerminalBinding);
52
57
  }
53
58
 
59
+ /**
60
+ * @param {ObjectDeserializerContext} context context
61
+ * @returns {RestoreProvidedData} RestoreProvidedData
62
+ */
54
63
  static deserialize({ read }) {
55
64
  return new RestoreProvidedData(read(), read(), read(), read());
56
65
  }
@@ -301,7 +310,12 @@ class ExportsInfo {
301
310
  changed = true;
302
311
  }
303
312
  if (targetKey) {
304
- exportInfo.setTarget(targetKey, targetModule, [exportInfo.name], -1);
313
+ exportInfo.setTarget(
314
+ targetKey,
315
+ /** @type {ModuleGraphConnection} */ (targetModule),
316
+ [exportInfo.name],
317
+ -1
318
+ );
305
319
  }
306
320
  }
307
321
  if (this._redirectTo !== undefined) {
@@ -331,7 +345,7 @@ class ExportsInfo {
331
345
  if (targetKey) {
332
346
  this._otherExportsInfo.setTarget(
333
347
  targetKey,
334
- targetModule,
348
+ /** @type {ModuleGraphConnection} */ (targetModule),
335
349
  undefined,
336
350
  priority
337
351
  );
@@ -752,6 +766,9 @@ class ExportsInfo {
752
766
  );
753
767
  }
754
768
 
769
+ /**
770
+ * @param {{ otherProvided: any, otherCanMangleProvide: any, otherTerminalBinding: any, exports: any }} data data
771
+ */
755
772
  restoreProvided({
756
773
  otherProvided,
757
774
  otherCanMangleProvide,
@@ -1223,7 +1240,7 @@ class ExportInfo {
1223
1240
  /**
1224
1241
  * @param {ModuleGraph} moduleGraph the module graph
1225
1242
  * @param {function(Module): boolean} validTargetModuleFilter a valid target module
1226
- * @param {Set<ExportInfo> | undefined} alreadyVisited set of already visited export info to avoid circular references
1243
+ * @param {Set<ExportInfo>} alreadyVisited set of already visited export info to avoid circular references
1227
1244
  * @returns {{ module: Module, export: string[] | undefined } | undefined | false} the target, undefined when there is no target, false when no target is valid
1228
1245
  */
1229
1246
  _findTarget(moduleGraph, validTargetModuleFilter, alreadyVisited) {
@@ -5,11 +5,20 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const {
9
+ JAVASCRIPT_MODULE_TYPE_AUTO,
10
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
11
+ JAVASCRIPT_MODULE_TYPE_ESM
12
+ } = require("./ModuleTypeConstants");
8
13
  const ConstDependency = require("./dependencies/ConstDependency");
9
14
  const ExportsInfoDependency = require("./dependencies/ExportsInfoDependency");
10
15
 
11
16
  /** @typedef {import("./Compiler")} Compiler */
17
+ /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
12
18
  /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
19
+ /** @typedef {import("./javascript/JavascriptParser").Range} Range */
20
+
21
+ const PLUGIN_NAME = "ExportsInfoApiPlugin";
13
22
 
14
23
  class ExportsInfoApiPlugin {
15
24
  /**
@@ -19,7 +28,7 @@ class ExportsInfoApiPlugin {
19
28
  */
20
29
  apply(compiler) {
21
30
  compiler.hooks.compilation.tap(
22
- "ExportsInfoApiPlugin",
31
+ PLUGIN_NAME,
23
32
  (compilation, { normalModuleFactory }) => {
24
33
  compilation.dependencyTemplates.set(
25
34
  ExportsInfoDependency,
@@ -32,37 +41,44 @@ class ExportsInfoApiPlugin {
32
41
  const handler = parser => {
33
42
  parser.hooks.expressionMemberChain
34
43
  .for("__webpack_exports_info__")
35
- .tap("ExportsInfoApiPlugin", (expr, members) => {
44
+ .tap(PLUGIN_NAME, (expr, members) => {
36
45
  const dep =
37
46
  members.length >= 2
38
47
  ? new ExportsInfoDependency(
39
- expr.range,
48
+ /** @type {Range} */ (expr.range),
40
49
  members.slice(0, -1),
41
50
  members[members.length - 1]
42
51
  )
43
- : new ExportsInfoDependency(expr.range, null, members[0]);
44
- dep.loc = expr.loc;
52
+ : new ExportsInfoDependency(
53
+ /** @type {Range} */ (expr.range),
54
+ null,
55
+ members[0]
56
+ );
57
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
45
58
  parser.state.module.addDependency(dep);
46
59
  return true;
47
60
  });
48
61
  parser.hooks.expression
49
62
  .for("__webpack_exports_info__")
50
- .tap("ExportsInfoApiPlugin", expr => {
51
- const dep = new ConstDependency("true", expr.range);
52
- dep.loc = expr.loc;
63
+ .tap(PLUGIN_NAME, expr => {
64
+ const dep = new ConstDependency(
65
+ "true",
66
+ /** @type {Range} */ (expr.range)
67
+ );
68
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
53
69
  parser.state.module.addPresentationalDependency(dep);
54
70
  return true;
55
71
  });
56
72
  };
57
73
  normalModuleFactory.hooks.parser
58
- .for("javascript/auto")
59
- .tap("ExportsInfoApiPlugin", handler);
74
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
75
+ .tap(PLUGIN_NAME, handler);
60
76
  normalModuleFactory.hooks.parser
61
- .for("javascript/dynamic")
62
- .tap("ExportsInfoApiPlugin", handler);
77
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
78
+ .tap(PLUGIN_NAME, handler);
63
79
  normalModuleFactory.hooks.parser
64
- .for("javascript/esm")
65
- .tap("ExportsInfoApiPlugin", handler);
80
+ .for(JAVASCRIPT_MODULE_TYPE_ESM)
81
+ .tap(PLUGIN_NAME, handler);
66
82
  }
67
83
  );
68
84
  }
@@ -10,6 +10,7 @@ const ConcatenationScope = require("./ConcatenationScope");
10
10
  const { UsageState } = require("./ExportsInfo");
11
11
  const InitFragment = require("./InitFragment");
12
12
  const Module = require("./Module");
13
+ const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
13
14
  const RuntimeGlobals = require("./RuntimeGlobals");
14
15
  const Template = require("./Template");
15
16
  const StaticExportsDependency = require("./dependencies/StaticExportsDependency");
@@ -38,6 +39,8 @@ const { register } = require("./util/serialization");
38
39
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
39
40
  /** @typedef {import("./WebpackError")} WebpackError */
40
41
  /** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
42
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
43
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
41
44
  /** @typedef {import("./util/Hash")} Hash */
42
45
  /** @typedef {typeof import("./util/Hash")} HashConstructor */
43
46
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
@@ -101,9 +104,13 @@ const getSourceForCommonJsExternal = moduleAndSpecifiers => {
101
104
 
102
105
  /**
103
106
  * @param {string|string[]} moduleAndSpecifiers the module request
107
+ * @param {string} importMetaName import.meta name
104
108
  * @returns {SourceData} the generated source
105
109
  */
106
- const getSourceForCommonJsExternalInNodeModule = moduleAndSpecifiers => {
110
+ const getSourceForCommonJsExternalInNodeModule = (
111
+ moduleAndSpecifiers,
112
+ importMetaName
113
+ ) => {
107
114
  const chunkInitFragments = [
108
115
  new InitFragment(
109
116
  'import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "module";\n',
@@ -114,18 +121,18 @@ const getSourceForCommonJsExternalInNodeModule = moduleAndSpecifiers => {
114
121
  ];
115
122
  if (!Array.isArray(moduleAndSpecifiers)) {
116
123
  return {
117
- expression: `__WEBPACK_EXTERNAL_createRequire(import.meta.url)(${JSON.stringify(
124
+ chunkInitFragments,
125
+ expression: `__WEBPACK_EXTERNAL_createRequire(${importMetaName}.url)(${JSON.stringify(
118
126
  moduleAndSpecifiers
119
- )})`,
120
- chunkInitFragments
127
+ )})`
121
128
  };
122
129
  }
123
130
  const moduleName = moduleAndSpecifiers[0];
124
131
  return {
125
- expression: `__WEBPACK_EXTERNAL_createRequire(import.meta.url)(${JSON.stringify(
132
+ chunkInitFragments,
133
+ expression: `__WEBPACK_EXTERNAL_createRequire(${importMetaName}.url)(${JSON.stringify(
126
134
  moduleName
127
- )})${propertyAccess(moduleAndSpecifiers, 1)}`,
128
- chunkInitFragments
135
+ )})${propertyAccess(moduleAndSpecifiers, 1)}`
129
136
  };
130
137
  };
131
138
 
@@ -377,8 +384,13 @@ const getSourceForDefaultCase = (optional, request, runtimeTemplate) => {
377
384
  };
378
385
 
379
386
  class ExternalModule extends Module {
387
+ /**
388
+ * @param {string | string[] | Record<string, string | string[]>} request request
389
+ * @param {TODO} type type
390
+ * @param {string} userRequest user request
391
+ */
380
392
  constructor(request, type, userRequest) {
381
- super("javascript/dynamic", null);
393
+ super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
382
394
 
383
395
  // Info from Factory
384
396
  /** @type {string | string[] | Record<string, string | string[]>} */
@@ -554,7 +566,10 @@ class ExternalModule extends Module {
554
566
  return getSourceForCommonJsExternal(request);
555
567
  case "node-commonjs":
556
568
  return this.buildInfo.module
557
- ? getSourceForCommonJsExternalInNodeModule(request)
569
+ ? getSourceForCommonJsExternalInNodeModule(
570
+ request,
571
+ runtimeTemplate.outputOptions.importMetaName
572
+ )
558
573
  : getSourceForCommonJsExternal(request);
559
574
  case "amd":
560
575
  case "amd-require":
@@ -732,6 +747,9 @@ class ExternalModule extends Module {
732
747
  super.updateHash(hash, context);
733
748
  }
734
749
 
750
+ /**
751
+ * @param {ObjectSerializerContext} context context
752
+ */
735
753
  serialize(context) {
736
754
  const { write } = context;
737
755
 
@@ -742,6 +760,9 @@ class ExternalModule extends Module {
742
760
  super.serialize(context);
743
761
  }
744
762
 
763
+ /**
764
+ * @param {ObjectDeserializerContext} context context
765
+ */
745
766
  deserialize(context) {
746
767
  const { read } = context;
747
768
 
@@ -18,6 +18,8 @@ const processAsyncTree = require("./util/processAsyncTree");
18
18
 
19
19
  /** @typedef {import("./WebpackError")} WebpackError */
20
20
  /** @typedef {import("./logging/Logger").Logger} Logger */
21
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
23
  /** @typedef {typeof import("./util/Hash")} Hash */
22
24
  /** @typedef {import("./util/fs").IStats} IStats */
23
25
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
@@ -378,6 +380,9 @@ class Snapshot {
378
380
  this.children.add(child);
379
381
  }
380
382
 
383
+ /**
384
+ * @param {ObjectSerializerContext} context context
385
+ */
381
386
  serialize({ write }) {
382
387
  write(this._flags);
383
388
  if (this.hasStartTime()) write(this.startTime);
@@ -395,6 +400,9 @@ class Snapshot {
395
400
  if (this.hasChildren()) write(this.children);
396
401
  }
397
402
 
403
+ /**
404
+ * @param {ObjectDeserializerContext} context context
405
+ */
398
406
  deserialize({ read }) {
399
407
  this._flags = read();
400
408
  if (this.hasStartTime()) this.startTime = read();
@@ -1456,7 +1464,7 @@ class FileSystemInfo {
1456
1464
  push({
1457
1465
  type: RBDT_DIRECTORY,
1458
1466
  context: undefined,
1459
- path: resultPath,
1467
+ path: /** @type {string} */ (resultPath),
1460
1468
  expected: undefined,
1461
1469
  issuer: job
1462
1470
  });