webpack 5.111.0 → 5.112.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 (781) hide show
  1. package/README.md +1 -1
  2. package/lib/Chunk.js +3 -966
  3. package/lib/Compilation.js +237 -138
  4. package/lib/Compiler.js +23 -24
  5. package/lib/Dependency.js +3 -551
  6. package/lib/DependencyTemplate.js +3 -69
  7. package/lib/EntryPlugin.js +3 -68
  8. package/lib/Entrypoint.js +3 -121
  9. package/lib/ExternalsPlugin.js +3 -92
  10. package/lib/FileSystemInfo.js +3 -4629
  11. package/lib/InitFragment.js +3 -204
  12. package/lib/LibraryTemplatePlugin.js +3 -46
  13. package/lib/ModuleFilenameHelpers.js +3 -400
  14. package/lib/ModuleNotFoundError.js +2 -2
  15. package/lib/MultiCompiler.js +43 -24
  16. package/lib/NormalModule.js +3 -2190
  17. package/lib/NullFactory.js +3 -22
  18. package/lib/ProgressPlugin.js +3 -908
  19. package/lib/RawModule.js +3 -197
  20. package/lib/RequestShortener.js +3 -37
  21. package/lib/SingleEntryPlugin.js +1 -1
  22. package/lib/WebpackError.js +2 -2
  23. package/lib/asset/AssetBytesGenerator.js +15 -9
  24. package/lib/asset/AssetBytesParser.js +3 -3
  25. package/lib/asset/AssetGenerator.js +61 -38
  26. package/lib/asset/AssetModule.js +2 -2
  27. package/lib/asset/AssetModulesPlugin.js +6 -9
  28. package/lib/asset/AssetParser.js +3 -3
  29. package/lib/asset/AssetSourceGenerator.js +15 -9
  30. package/lib/asset/AssetSourceParser.js +3 -3
  31. package/lib/asset/RawDataUrlModule.js +17 -10
  32. package/lib/asset/WebManifestGenerator.js +7 -7
  33. package/lib/asset/WebManifestParser.js +5 -5
  34. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  35. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  36. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  37. package/lib/async-modules/isGeneratorLowered.js +3 -3
  38. package/lib/bun/BunTargetPlugin.js +1 -1
  39. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  40. package/lib/{Cache.js → cache/Cache.js} +1 -1
  41. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  42. package/lib/cache/IdleFileCachePlugin.js +2 -2
  43. package/lib/cache/MemoryCachePlugin.js +6 -6
  44. package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
  45. package/lib/cache/PackFileCacheStrategy.js +11 -28
  46. package/lib/cache/ResolverCachePlugin.js +8 -4
  47. package/lib/cache/getLazyHashedEtag.js +3 -5
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +3 -9
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +192 -122
  56. package/lib/config/getClaimedAssetTypes.js +28 -21
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +13 -4
  59. package/lib/container/ContainerEntryDependency.js +1 -1
  60. package/lib/container/ContainerEntryModule.js +13 -11
  61. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  62. package/lib/container/ContainerExposedDependency.js +1 -1
  63. package/lib/container/ContainerPlugin.js +178 -5
  64. package/lib/container/ContainerReferencePlugin.js +75 -14
  65. package/lib/container/FallbackDependency.js +1 -1
  66. package/lib/container/FallbackItemDependency.js +1 -1
  67. package/lib/container/FallbackModule.js +12 -10
  68. package/lib/container/FallbackModuleFactory.js +2 -2
  69. package/lib/container/HoistContainerReferencesPlugin.js +10 -11
  70. package/lib/container/ModuleFederationPlugin.js +306 -7
  71. package/lib/container/RemoteModule.js +14 -10
  72. package/lib/container/RemoteRuntimeModule.js +5 -5
  73. package/lib/container/RemoteToExternalDependency.js +1 -1
  74. package/lib/container/moduleFederationHooks.js +1 -1
  75. package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
  76. package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
  77. package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
  78. package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
  79. package/lib/css/CssGenerator.js +57 -42
  80. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  81. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  82. package/lib/css/CssModule.js +27 -29
  83. package/lib/css/CssModulesPlugin.js +128 -44
  84. package/lib/css/CssParser.js +700 -311
  85. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  86. package/lib/css/cssMinify.js +130 -54
  87. package/lib/css/data.js +7017 -4648
  88. package/lib/css/syntax-parser.js +19873 -0
  89. package/lib/css/syntax-printer.js +6037 -0
  90. package/lib/css/syntax.js +37 -17370
  91. package/lib/debug/ProfilingPlugin.js +55 -23
  92. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  93. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
  94. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  95. package/lib/deno/DenoTargetPlugin.js +1 -1
  96. package/lib/dependencies/ConstDependency.js +3 -120
  97. package/lib/dependencies/ContextElementDependency.js +5 -172
  98. package/lib/dependencies/NullDependency.js +3 -37
  99. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  100. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  101. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  102. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  103. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  104. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  105. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  106. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  107. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  108. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  109. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  110. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  111. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  112. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  113. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  114. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  115. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +176 -44
  116. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  117. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  118. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  119. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +39 -35
  120. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  121. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  122. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  123. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  124. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +19 -20
  125. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  126. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  127. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  128. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  129. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  130. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  131. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  132. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  133. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  134. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  135. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  136. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  137. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  138. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  139. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  140. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +34 -18
  141. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  142. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  143. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  144. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  145. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  146. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  147. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  148. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  149. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  150. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  151. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  152. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  153. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  154. package/lib/dependencies/core/ConstDependency.js +131 -0
  155. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  156. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  157. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  158. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  159. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  160. package/lib/dependencies/core/NullDependency.js +44 -0
  161. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  162. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  163. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -100
  164. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
  165. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  166. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  167. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +26 -21
  168. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  169. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  170. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  171. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +40 -41
  172. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
  173. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  174. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
  175. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
  176. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  177. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  178. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +136 -122
  179. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
  180. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
  181. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  182. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  183. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  184. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +199 -97
  185. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  186. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
  187. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
  188. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  189. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  190. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  191. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  192. package/lib/{util → dependencies/helpers}/chainedImports.js +8 -9
  193. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  194. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  195. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  196. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  198. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  199. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +125 -243
  200. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  201. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
  202. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
  203. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  204. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  205. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  206. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  207. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  208. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  209. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  210. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  211. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  213. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +126 -107
  214. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  215. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  216. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  217. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  218. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +34 -25
  219. package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
  220. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  221. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  222. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  223. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  224. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +46 -54
  225. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
  226. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
  227. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  228. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  229. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  230. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  231. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +207 -129
  232. package/lib/{util → devtool}/generateDebugId.js +1 -1
  233. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  234. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  235. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  236. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  237. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  238. package/lib/dll/DelegatedModule.js +20 -18
  239. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  240. package/lib/dll/DelegatedPlugin.js +1 -1
  241. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  242. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  243. package/lib/dll/DllEntryPlugin.js +3 -3
  244. package/lib/dll/DllModule.js +11 -9
  245. package/lib/dll/DllModuleFactory.js +3 -3
  246. package/lib/dll/DllPlugin.js +18 -6
  247. package/lib/dll/DllReferencePlugin.js +102 -26
  248. package/lib/dll/LibManifestPlugin.js +9 -7
  249. package/lib/electron/ElectronTargetPlugin.js +2 -2
  250. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  251. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  252. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  253. package/lib/entry/EntryPlugin.js +75 -0
  254. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  255. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  256. package/lib/errors/BuildCycleError.js +1 -1
  257. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  258. package/lib/errors/ChunkRenderError.js +1 -1
  259. package/lib/errors/CodeGenerationError.js +1 -1
  260. package/lib/errors/CommentCompilationWarning.js +1 -1
  261. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  262. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  263. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  264. package/lib/errors/DllManifestError.js +26 -0
  265. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  266. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  267. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  268. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  269. package/lib/errors/ErrorHelpers.js +222 -0
  270. package/lib/errors/ExternalStarReexportError.js +2 -2
  271. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  272. package/lib/errors/HookWebpackError.js +6 -5
  273. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  274. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  275. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  276. package/lib/errors/ModuleBuildError.js +1 -1
  277. package/lib/errors/ModuleDependencyError.js +2 -2
  278. package/lib/errors/ModuleDependencyWarning.js +2 -2
  279. package/lib/errors/ModuleError.js +1 -1
  280. package/lib/errors/ModuleHashingError.js +1 -1
  281. package/lib/errors/ModuleNotFoundError.js +3 -3
  282. package/lib/errors/ModuleParseError.js +1 -1
  283. package/lib/errors/ModuleRestoreError.js +1 -1
  284. package/lib/errors/ModuleStoreError.js +1 -1
  285. package/lib/errors/ModuleWarning.js +1 -1
  286. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  287. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  288. package/lib/errors/NodeStuffInWebError.js +7 -2
  289. package/lib/errors/PathVariableError.js +31 -0
  290. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  291. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  292. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  293. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  294. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  295. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  296. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  297. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  298. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  299. package/lib/errors/WebpackError.js +12 -3
  300. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  301. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  302. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  303. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  304. package/lib/{ExternalModule.js → externals/ExternalModule.js} +85 -63
  305. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  306. package/lib/externals/ExternalsPlugin.js +99 -0
  307. package/lib/fs/FileSystemInfo.js +4642 -0
  308. package/lib/{util → fs}/fs.js +22 -9
  309. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  310. package/lib/graph/Chunk.js +985 -0
  311. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  312. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  313. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  314. package/lib/graph/Dependency.js +628 -0
  315. package/lib/graph/Entrypoint.js +136 -0
  316. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +151 -99
  317. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  318. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
  319. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  320. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
  321. package/lib/{util → graph}/findGraphRoots.js +20 -21
  322. package/lib/graph/isDependencyKind.js +23 -0
  323. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  324. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -47
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  326. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  327. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  328. package/lib/hmr/LazyCompilationPlugin.js +34 -26
  329. package/lib/html/HtmlGenerator.js +168 -125
  330. package/lib/html/HtmlModule.js +6 -2
  331. package/lib/html/HtmlModulesPlugin.js +260 -215
  332. package/lib/html/HtmlParser.js +598 -292
  333. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  334. package/lib/html/data.js +23 -1
  335. package/lib/html/htmlMinify.js +120 -51
  336. package/lib/html/syntax-parser.js +15796 -0
  337. package/lib/html/syntax-printer.js +1034 -0
  338. package/lib/html/syntax.js +37 -14062
  339. package/lib/html/xmlMinify.js +67 -0
  340. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  341. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  342. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  343. package/lib/ids/IdHelpers.js +4 -4
  344. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  345. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  346. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  347. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  348. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  349. package/lib/{util → ids}/numberHash.js +1 -1
  350. package/lib/index.js +348 -99
  351. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
  352. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  353. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  354. package/lib/javascript/ChunkHelpers.js +64 -4
  355. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  356. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +10 -11
  357. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
  358. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  359. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  360. package/lib/javascript/JavascriptGenerator.js +25 -18
  361. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  362. package/lib/javascript/JavascriptModule.js +4 -3
  363. package/lib/javascript/JavascriptModulesPlugin.js +458 -256
  364. package/lib/javascript/JavascriptParser.js +916 -287
  365. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  366. package/lib/javascript/MergedEntryExports.js +196 -0
  367. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  368. package/lib/javascript/StartupHelpers.js +6 -6
  369. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  370. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  371. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  372. package/lib/javascript/data.js +533 -122
  373. package/lib/javascript/jsMinify.js +272 -0
  374. package/lib/javascript/regexp.js +67 -32
  375. package/lib/javascript/syntax-parser.js +18561 -0
  376. package/lib/javascript/syntax-printer-data.js +933 -0
  377. package/lib/javascript/syntax-printer.js +47106 -0
  378. package/lib/javascript/syntax.js +20 -10946
  379. package/lib/json/JsonData.js +1 -1
  380. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  381. package/lib/json/JsonGenerator.js +17 -11
  382. package/lib/json/JsonModule.js +2 -2
  383. package/lib/json/JsonModulesPlugin.js +1 -1
  384. package/lib/json/JsonParser.js +5 -5
  385. package/lib/json/jsonMinify.js +69 -0
  386. package/lib/library/AbstractLibraryPlugin.js +28 -15
  387. package/lib/library/AmdLibraryPlugin.js +4 -4
  388. package/lib/library/AssignLibraryPlugin.js +27 -11
  389. package/lib/library/EnableLibraryPlugin.js +1 -1
  390. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  391. package/lib/library/JsonpLibraryPlugin.js +1 -1
  392. package/lib/library/LibraryTemplatePlugin.js +53 -0
  393. package/lib/library/ModuleLibraryPlugin.js +207 -285
  394. package/lib/library/SystemLibraryPlugin.js +6 -8
  395. package/lib/library/UmdLibraryPlugin.js +3 -4
  396. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  397. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  398. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  399. package/lib/{dependencies → loaders}/LoaderPlugin.js +27 -2
  400. package/lib/loaders/LoaderRunner.js +160 -22
  401. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  402. package/lib/logging/Logger.js +7 -9
  403. package/lib/logging/ProgressPlugin.js +957 -0
  404. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  405. package/lib/{Generator.js → module/Generator.js} +38 -14
  406. package/lib/{Module.js → module/Module.js} +122 -54
  407. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  408. package/lib/module/NormalModule.js +2348 -0
  409. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  410. package/lib/module/NullFactory.js +29 -0
  411. package/lib/{Parser.js → module/Parser.js} +3 -3
  412. package/lib/module/RawModule.js +208 -0
  413. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  414. package/lib/{util → module}/extractSourceMap.js +2 -2
  415. package/lib/{util → module}/findCaseMismatch.js +2 -2
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  417. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  418. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  419. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  420. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  421. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  422. package/lib/node/NodeTargetPlugin.js +1 -1
  423. package/lib/node/NodeWatchFileSystem.js +61 -15
  424. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  425. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  426. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  427. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  428. package/lib/node/nodeConsole.js +2 -4
  429. package/lib/optimize/AggressiveMergingPlugin.js +5 -7
  430. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  431. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  432. package/lib/optimize/ConcatenatedModule.js +305 -309
  433. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  434. package/lib/optimize/ConstExportsPlugin.js +7 -7
  435. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  436. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  437. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +25 -30
  438. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
  439. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  440. package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
  441. package/lib/optimize/InlineExports.js +11 -3
  442. package/lib/optimize/InnerGraph.js +5 -13
  443. package/lib/optimize/InnerGraphPlugin.js +17 -23
  444. package/lib/optimize/LazyBarrels.js +584 -0
  445. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  446. package/lib/optimize/LimitChunkCountPlugin.js +21 -15
  447. package/lib/optimize/MangleExportsPlugin.js +8 -9
  448. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  449. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  450. package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
  451. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  452. package/lib/optimize/RealContentHashPlugin.js +16 -7
  453. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  454. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  455. package/lib/optimize/SideEffectsFlagPlugin.js +25 -37
  456. package/lib/optimize/SplitChunksPlugin.js +715 -159
  457. package/lib/{util → optimize}/TupleQueue.js +9 -9
  458. package/lib/optimize/chunkSetIntersections.js +437 -0
  459. package/lib/{util → optimize}/deterministicGrouping.js +25 -30
  460. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  461. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  462. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  463. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  464. package/lib/output/SSRManifestPlugin.js +349 -0
  465. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  466. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  467. package/lib/performance/BroadContextsPlugin.js +4 -4
  468. package/lib/performance/CacheEffectivenessPlugin.js +5 -7
  469. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  470. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  471. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  472. package/lib/performance/DynamicExportsPlugin.js +2 -2
  473. package/lib/performance/EvalUsagePlugin.js +3 -3
  474. package/lib/performance/HotspotsPlugin.js +11 -10
  475. package/lib/performance/LargeModulesPlugin.js +2 -3
  476. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  477. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  478. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  479. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  480. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  481. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  482. package/lib/performance/SizeLimitsPlugin.js +13 -16
  483. package/lib/performance/TopLevelThisPlugin.js +8 -7
  484. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  485. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  486. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  487. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  488. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  489. package/lib/performance/UnusedFederationPlugin.js +2 -4
  490. package/lib/performance/UnusedModulesPlugin.js +5 -4
  491. package/lib/performance/getModuleSize.js +1 -1
  492. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  493. package/lib/performance/isOnlyReexported.js +7 -6
  494. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  495. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  496. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +7 -9
  497. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  499. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  500. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  501. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  502. package/lib/prefetch/ResourceHintPlugin.js +82 -65
  503. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
  505. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  506. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  507. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  508. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  509. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  510. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  511. package/lib/resolve/getResolveOptionsKey.js +59 -0
  512. package/lib/rules/RuleSetCompiler.js +27 -46
  513. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  514. package/lib/runtime/AsyncModuleRuntimeModule.js +10 -9
  515. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  516. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  517. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  519. package/lib/runtime/CompatRuntimeModule.js +4 -4
  520. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  521. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  524. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  525. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  526. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  527. package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -10
  528. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  529. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  530. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  531. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  532. package/lib/runtime/GlobalRuntimeModule.js +5 -7
  533. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  534. package/lib/runtime/HelperRuntimeModule.js +16 -1
  535. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  536. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +135 -102
  537. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  538. package/lib/runtime/NonceRuntimeModule.js +2 -2
  539. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  540. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  541. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  542. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  543. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  544. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  545. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  546. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  547. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  549. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  550. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  551. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  552. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  553. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  554. package/lib/runtime/baseUri.js +1 -1
  555. package/lib/schemes/DataUriPlugin.js +4 -7
  556. package/lib/schemes/HttpUriPlugin.js +67 -11
  557. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  558. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  559. package/lib/serialization/BinaryMiddleware.js +9 -9
  560. package/lib/serialization/FileMiddleware.js +19 -19
  561. package/lib/serialization/ObjectMiddleware.js +77 -49
  562. package/lib/serialization/SerializerMiddleware.js +2 -2
  563. package/lib/serialization/SingleItemMiddleware.js +4 -2
  564. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  565. package/lib/sharing/ConsumeSharedModule.js +18 -14
  566. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  567. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  568. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  569. package/lib/sharing/ProvideSharedDependency.js +1 -1
  570. package/lib/sharing/ProvideSharedModule.js +11 -9
  571. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  572. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  573. package/lib/sharing/SharePlugin.js +102 -9
  574. package/lib/sharing/ShareRuntimeModule.js +6 -6
  575. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  576. package/lib/{util → sharing}/semver.js +19 -19
  577. package/lib/sharing/utils.js +59 -2
  578. package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
  579. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  580. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  581. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  582. package/lib/{Stats.js → stats/Stats.js} +4 -4
  583. package/lib/stats/StatsFactory.js +14 -13
  584. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  585. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  586. package/lib/template/DependencyTemplate.js +77 -0
  587. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  588. package/lib/template/InitFragment.js +223 -0
  589. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  590. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  591. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  592. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +178 -106
  593. package/lib/{Template.js → template/Template.js} +13 -11
  594. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
  595. package/lib/typescript/TypeScriptPlugin.js +5 -6
  596. package/lib/util/LocConverter.js +4 -7
  597. package/lib/util/RequestShortener.js +44 -0
  598. package/lib/util/SortableSet.js +87 -22
  599. package/lib/util/SourceProcessor.js +364 -66
  600. package/lib/util/TupleSet.js +27 -27
  601. package/lib/util/WeakTupleMap.js +10 -12
  602. package/lib/util/buildDiagnostics.js +2 -2
  603. package/lib/util/comparators.js +10 -10
  604. package/lib/util/concatenate.js +32 -151
  605. package/lib/util/createHooksRegistry.js +1 -2
  606. package/lib/util/createMappings.js +111 -0
  607. package/lib/util/dataURL.js +96 -18
  608. package/lib/util/deprecation.js +1 -1
  609. package/lib/util/extractComments.js +118 -0
  610. package/lib/util/formatLocation.js +1 -1
  611. package/lib/util/globUtils.js +197 -16
  612. package/lib/util/haltVisitors.js +51 -0
  613. package/lib/util/handlerKeys.js +2 -2
  614. package/lib/util/hash/wasm-hash.js +3 -4
  615. package/lib/util/identifier.js +117 -1
  616. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  617. package/lib/util/internalSerializables.js +295 -103
  618. package/lib/util/magicComment.js +12 -7
  619. package/lib/util/makeSerializable.js +23 -4
  620. package/lib/util/parseJson.js +1 -1
  621. package/lib/util/preloadModuleType.js +5 -2
  622. package/lib/util/registerExternalSerializer.js +2 -2
  623. package/lib/util/removeBOM.js +1 -1
  624. package/lib/util/runtime.js +1 -1
  625. package/lib/util/serialization.js +4 -1
  626. package/lib/util/source.js +2 -2
  627. package/lib/util/terminalColors.js +161 -0
  628. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  629. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  630. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  631. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +11 -6
  632. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
  633. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  634. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  635. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  636. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  637. package/lib/wasm/wasmModuleFilename.js +2 -2
  638. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  639. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +11 -12
  640. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  641. package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
  642. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
  643. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  644. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  645. package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
  646. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  647. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  648. package/lib/{Watching.js → watch/Watching.js} +8 -8
  649. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  650. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  651. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  652. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  653. package/lib/web/JsonpTemplatePlugin.js +1 -1
  654. package/lib/webpack.js +27 -17
  655. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  656. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  657. package/package.json +70 -40
  658. package/schemas/WebpackOptions.check.js +2 -1
  659. package/schemas/WebpackOptions.d.json.ts +2 -0
  660. package/schemas/WebpackOptions.json +294 -74
  661. package/schemas/plugins/BannerPlugin.check.js +2 -1
  662. package/schemas/plugins/BannerPlugin.json +29 -2
  663. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  664. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  665. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  666. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  667. package/schemas/plugins/IgnorePlugin.json +1 -1
  668. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  669. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  670. package/schemas/plugins/ManifestPlugin.json +3 -3
  671. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  672. package/schemas/plugins/ProgressPlugin.json +2 -7
  673. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  674. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  675. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  676. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  677. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  678. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  679. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  680. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  681. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  682. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  683. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  684. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  685. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  686. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  687. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  688. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  689. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  690. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  691. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  692. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  693. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  694. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  695. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  696. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  697. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  698. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  699. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  700. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  701. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  702. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  703. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  704. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  705. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  706. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  707. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  708. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  709. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  710. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  711. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  712. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  713. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  714. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  715. package/types.d.ts +13915 -8414
  716. package/lib/ErrorHelpers.js +0 -107
  717. package/lib/LazyBarrel.js +0 -388
  718. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  719. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  720. package/lib/javascript/ChunkFormatHelpers.js +0 -71
  721. package/lib/javascript/grammar.js +0 -5546
  722. package/lib/javascript/parser.js +0 -1494
  723. package/lib/javascript/regexpData.js +0 -51
  724. package/lib/performance/getSourceModules.js +0 -22
  725. package/lib/util/Semaphore.js +0 -65
  726. package/lib/util/objectToMap.js +0 -15
  727. package/schemas/WebpackOptions.check.d.ts +0 -7
  728. package/schemas/_container.json +0 -155
  729. package/schemas/_sharing.json +0 -118
  730. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  732. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  733. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  734. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  735. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  736. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  737. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  740. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  741. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  744. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  745. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  746. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  748. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  749. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  750. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  751. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  752. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  753. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  754. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  755. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  758. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  759. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  760. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  763. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  764. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  765. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  766. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  767. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  768. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  769. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  770. /package/lib/{util → css}/conventions.js +0 -0
  771. /package/lib/{util → css}/topologicalSort.js +0 -0
  772. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  773. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  774. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  775. /package/lib/{util → javascript}/StackedMap.js +0 -0
  776. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  777. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  778. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  779. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  780. /package/lib/{util → optimize}/Queue.js +0 -0
  781. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -5,2193 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const querystring = require("querystring");
9
- const {
10
- AsyncSeriesBailHook,
11
- AsyncSeriesWaterfallHook,
12
- HookMap,
13
- SyncHook
14
- } = require("tapable");
15
- const {
16
- CachedSource,
17
- OriginalSource,
18
- RawSource,
19
- SourceMapSource
20
- } = require("webpack-sources");
21
- const Dependency = require("./Dependency");
22
- const Module = require("./Module");
23
- const ModuleGraphConnection = require("./ModuleGraphConnection");
24
- const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
25
- const RuntimeGlobals = require("./RuntimeGlobals");
26
- const HarmonyImportSideEffectDependency = require("./dependencies/HarmonyImportSideEffectDependency");
27
- const HookWebpackError = require("./errors/HookWebpackError");
28
- const {
29
- createLoaderContext,
30
- getContext,
31
- runLoaders
32
- } = require("./loaders/LoaderRunner");
33
- const LazySet = require("./util/LazySet");
34
- const { isSubset } = require("./util/SetHelpers");
35
- const { getScheme } = require("./util/URLAbsoluteSpecifier");
36
- const { getBuildDiagnostics } = require("./util/buildDiagnostics");
37
- const {
38
- concatComparators,
39
- keepOriginalOrder,
40
- sortWithSourceOrder
41
- } = require("./util/comparators");
42
- const createHash = require("./util/createHash");
43
- const createHooksRegistry = require("./util/createHooksRegistry");
44
- const { createFakeHook } = require("./util/deprecation");
45
- const formatLocation = require("./util/formatLocation");
46
- const { join } = require("./util/fs");
47
- const {
48
- ABSOLUTE_PATH_REGEXP,
49
- absolutify,
50
- contextify,
51
- contextifySourceUrl
52
- } = require("./util/identifier");
53
- const makeSerializable = require("./util/makeSerializable");
54
- const memoize = require("./util/memoize");
55
- const parseJson = require("./util/parseJson");
56
-
57
- const getValidate = memoize(() => require("schema-utils").validate);
58
-
59
- const getGenerator = memoize(() => require("./Generator"));
60
-
61
- const getExtractSourceMap = memoize(() => require("./util/extractSourceMap"));
62
-
63
- const getInvalidDependenciesModuleWarning = memoize(() =>
64
- require("./errors/InvalidDependenciesModuleWarning")
65
- );
66
-
67
- const getUnhandledSchemeError = memoize(() =>
68
- require("./errors/UnhandledSchemeError")
69
- );
70
-
71
- const getNonErrorEmittedError = memoize(() =>
72
- require("./errors/NonErrorEmittedError")
73
- );
74
-
75
- const getModuleWarning = memoize(() => require("./errors/ModuleWarning"));
76
-
77
- const getModuleParseError = memoize(() => require("./errors/ModuleParseError"));
78
-
79
- const getModuleError = memoize(() => require("./errors/ModuleError"));
80
-
81
- const getModuleBuildError = memoize(() => require("./errors/ModuleBuildError"));
82
-
83
- /** @import { ResolveContext, ResolveRequest } from "enhanced-resolve" */
84
- /** @import { Source, RawSourceMap } from "webpack-sources" */
85
- /**
86
- * @import {
87
- * ResolveOptions,
88
- * NoParse,
89
- * HashFunction
90
- * } from "../declarations/WebpackOptions"
91
- */
92
- /**
93
- * @import Compilation, {
94
- * FileSystemDependencies,
95
- * UnsafeCacheData
96
- * } from "./Compilation"
97
- */
98
- /**
99
- * @import {
100
- * WebpackOptionsNormalizedWithDefaults as WebpackOptions
101
- * } from "./config/defaults"
102
- */
103
- /** @import { UpdateHashContext } from "./Dependency" */
104
- /** @import Generator, { GenerateErrorFn } from "./Generator" */
105
- /** @import { Snapshot } from "./FileSystemInfo" */
106
- /**
107
- * @import {
108
- * BuildInfo,
109
- * ValueCacheVersions,
110
- * BuildMeta,
111
- * CodeGenerationContext,
112
- * CodeGenerationResult,
113
- * ConcatenationBailoutReasonContext,
114
- * KnownBuildInfo,
115
- * LibIdentOptions,
116
- * LibIdent,
117
- * NameForCondition,
118
- * NeedBuildContext,
119
- * NeedBuildCallback,
120
- * BuildCallback,
121
- * RuntimeRequirements,
122
- * SourceType,
123
- * SourceTypes
124
- * } from "./Module"
125
- */
126
- /** @import ModuleGraph from "./ModuleGraph" */
127
- /** @import { ConnectionState } from "./ModuleGraphConnection" */
128
- /**
129
- * @import NormalModuleFactory, {
130
- * NormalModuleTypes,
131
- * ParserByType,
132
- * ParserOptionsByType,
133
- * GeneratorByType,
134
- * GeneratorOptionsByType,
135
- * ResourceSchemeData
136
- * } from "./NormalModuleFactory"
137
- */
138
- /** @import Parser, { PreparsedAst } from "./Parser" */
139
- /** @import RequestShortener from "./RequestShortener" */
140
- /** @import { ResolverWithOptions } from "./ResolverFactory" */
141
- /**
142
- * @import {
143
- * ObjectDeserializerContext,
144
- * ObjectSerializerContext
145
- * } from "./serialization/ObjectMiddleware"
146
- */
147
- /** @import Hash from "./util/Hash" */
148
- /** @import { InputFileSystem } from "./util/fs" */
149
- /** @import { AssociatedObjectForCache } from "./util/identifier" */
150
- /**
151
- * @template T
152
- * @typedef {import("./util/deprecation").FakeHook<T>} FakeHook
153
- */
154
-
155
- /** @typedef {{ [k: string]: EXPECTED_ANY }} ParserOptions */
156
- /** @typedef {{ [k: string]: EXPECTED_ANY }} GeneratorOptions */
157
-
158
- /**
159
- * @template T
160
- * @typedef {import("../declarations/LoaderContext").LoaderContext<T>} LoaderContext
161
- */
162
-
163
- /**
164
- * @template T
165
- * @typedef {import("../declarations/LoaderContext").NormalModuleLoaderContext<T>} NormalModuleLoaderContext
166
- */
167
-
168
- /** @typedef {(content: string) => boolean} NoParseFn */
169
-
170
- /**
171
- * @param {NormalModule} mod the module
172
- * @param {ModuleGraph} moduleGraph the module graph
173
- * @param {Dependency} dep the dep that triggered the bailout
174
- */
175
- const recordSideEffectsBailout = (mod, moduleGraph, dep) => {
176
- if (mod._addedSideEffectsBailout === undefined) {
177
- mod._addedSideEffectsBailout = new WeakSet();
178
- } else if (mod._addedSideEffectsBailout.has(moduleGraph)) {
179
- return;
180
- }
181
- mod._addedSideEffectsBailout.add(moduleGraph);
182
- moduleGraph
183
- .getOptimizationBailout(mod)
184
- .push(
185
- () =>
186
- `Dependency (${dep.type}) with side effects at ${formatLocation(
187
- dep.loc
188
- )}`
189
- );
190
- };
191
-
192
- /**
193
- * Walks the `HarmonyImportSideEffectDependency` graph to decide how `rootMod`
194
- * connects to a referrer when consumed for its side effects only.
195
- *
196
- * Iterative (explicit work stack) so deep import chains never approach V8's
197
- * recursion limit — the overflow behind #20986 — with no separate recursive
198
- * form or depth cap. Cycles use Tarjan's `index`/`lowlink`: a module's result
199
- * is memoized on `_sideEffectsStateGraph` only when it is context-independent
200
- * (cycle-free, or the root of its strongly-connected component), i.e. exactly
201
- * when the result cannot depend on which ancestors are mid-walk.
202
- *
203
- * The previous walker disabled memoization for the whole walk the moment any
204
- * cycle appeared (one global `circular` flag). With diamond-shaped graphs that
205
- * made the walk exponential, so a single circular import could blow up an
206
- * otherwise-linear graph. Per-module lowlink keeps the cycle-free majority
207
- * memoized while a cycle exists elsewhere.
208
- *
209
- * Caching under `lowlink === index` is conservative: an imprecise lowlink can
210
- * only skip caching (a later recompute yields the same value), never memoize a
211
- * state that depended on stack context. `true` is monotonic and always cached.
212
- * A non-`NormalModule` dependency (e.g. `ConcatenatedModule` re-entering this
213
- * method) is treated as a taint so its chain is never memoized, and any module
214
- * already flagged `_isEvaluatingSideEffects` (this walk or an outer re-entrant
215
- * one) counts as circular, matching the previous walker.
216
- * @param {NormalModule} rootMod the module being walked
217
- * @param {ModuleGraph} moduleGraph the module graph
218
- * @param {EXPECTED_ANY} SideEffectDep `HarmonyImportSideEffectDependency` constructor, resolved once at the entry
219
- * @returns {ConnectionState} the side-effects connection state
220
- */
221
- const walkSideEffects = (rootMod, moduleGraph, SideEffectDep) => {
222
- // Context-independent state without descending; `undefined` => walk deps.
223
- /**
224
- * @param {NormalModule} mod module
225
- * @returns {ConnectionState | undefined} resolved state or undefined
226
- */
227
- const quick = (mod) => {
228
- if (mod._sideEffectsStateGraph === moduleGraph) {
229
- return /** @type {ConnectionState} */ (mod._sideEffectsStateValue);
230
- }
231
- const fm = mod.factoryMeta;
232
- if (fm !== undefined) {
233
- if (fm.sideEffectFree) return false;
234
- if (fm.sideEffectFree === false) return true;
235
- }
236
- if (!(mod.buildMeta !== undefined && mod.buildMeta.sideEffectFree)) {
237
- return true;
238
- }
239
- return undefined;
240
- };
241
-
242
- const q0 = quick(rootMod);
243
- if (q0 !== undefined) return q0;
244
-
245
- /** @type {Map<NormalModule, number>} module -> Tarjan index */
246
- const indexOf = new Map();
247
- /** @type {Map<NormalModule, number>} module -> Tarjan lowlink */
248
- const lowOf = new Map();
249
- // Parallel frame arrays, to avoid a per-frame object allocation.
250
- /** @type {NormalModule[]} */
251
- const fMod = [];
252
- /** @type {Dependency[][]} */
253
- const fDeps = [];
254
- /** @type {number[]} */
255
- const fIdx = [];
256
- /** @type {ConnectionState[]} */
257
- const fCur = [];
258
- let counter = 0;
259
-
260
- /**
261
- * @param {NormalModule} mod module to push a frame for
262
- */
263
- const enter = (mod) => {
264
- indexOf.set(mod, counter);
265
- lowOf.set(mod, counter);
266
- counter++;
267
- mod._isEvaluatingSideEffects = true;
268
- fMod.push(mod);
269
- fDeps.push(mod.dependencies);
270
- fIdx.push(0);
271
- fCur.push(false);
272
- };
273
-
274
- enter(rootMod);
275
- /** @type {ConnectionState} the just-popped frame's result */
276
- let result = false;
277
- /**
278
- * Result of a just-popped child frame, to apply to the new top's current
279
- * dep. `undefined` means "no pending; advance normally".
280
- * @type {ConnectionState | undefined}
281
- */
282
- let pending;
283
-
284
- while (fMod.length > 0) {
285
- const top = fMod.length - 1;
286
- const mod = fMod[top];
287
- const deps = fDeps[top];
288
- let i = fIdx[top];
289
- let current = fCur[top];
290
-
291
- // Apply a popped child's result to the dep that spawned it.
292
- if (pending !== undefined) {
293
- const state = pending;
294
- pending = undefined;
295
- const dep = deps[i];
296
- if (state === true) {
297
- recordSideEffectsBailout(mod, moduleGraph, dep);
298
- mod._sideEffectsStateGraph = moduleGraph;
299
- mod._sideEffectsStateValue = true;
300
- mod._isEvaluatingSideEffects = false;
301
- fMod.pop();
302
- fDeps.pop();
303
- fIdx.pop();
304
- fCur.pop();
305
- result = true;
306
- pending = true;
307
- continue;
308
- }
309
- if (state !== ModuleGraphConnection.CIRCULAR_CONNECTION) {
310
- current = ModuleGraphConnection.addConnectionStates(current, state);
311
- }
312
- i++;
313
- }
314
-
315
- let descended = false;
316
- while (i < deps.length) {
317
- const dep = deps[i];
318
- /** @type {ConnectionState} */
319
- let state;
320
-
321
- if (dep instanceof SideEffectDep) {
322
- const refModule = moduleGraph.getModule(dep);
323
- if (!refModule) {
324
- state = true;
325
- } else if (refModule instanceof NormalModule) {
326
- if (refModule._isEvaluatingSideEffects) {
327
- // On the current stack (or an outer re-entrant walk) => cycle.
328
- state = ModuleGraphConnection.CIRCULAR_CONNECTION;
329
- const ri = indexOf.get(refModule);
330
- lowOf.set(
331
- mod,
332
- Math.min(
333
- /** @type {number} */ (lowOf.get(mod)),
334
- ri === undefined ? -1 : ri
335
- )
336
- );
337
- } else {
338
- const q = quick(refModule);
339
- if (q !== undefined) {
340
- state = q;
341
- } else {
342
- // Descend: pause this frame, walk the child next.
343
- fIdx[top] = i;
344
- fCur[top] = current;
345
- enter(refModule);
346
- descended = true;
347
- break;
348
- }
349
- }
350
- } else {
351
- // Non-NormalModule (e.g. ConcatenatedModule delegating back
352
- // through here) resolves via a re-entrant walk that may see our
353
- // in-progress modules as circular, so taint this chain: never
354
- // memoize it.
355
- state = refModule.getSideEffectsConnectionState(moduleGraph);
356
- lowOf.set(mod, -1);
357
- }
358
- } else {
359
- state = dep.getModuleEvaluationSideEffectsState(moduleGraph);
360
- }
361
-
362
- if (state === true) {
363
- recordSideEffectsBailout(mod, moduleGraph, dep);
364
- // `true` is monotonic — always safe to memoize.
365
- mod._sideEffectsStateGraph = moduleGraph;
366
- mod._sideEffectsStateValue = true;
367
- mod._isEvaluatingSideEffects = false;
368
- fMod.pop();
369
- fDeps.pop();
370
- fIdx.pop();
371
- fCur.pop();
372
- result = true;
373
- pending = true;
374
- descended = true;
375
- break;
376
- }
377
- if (state !== ModuleGraphConnection.CIRCULAR_CONNECTION) {
378
- current = ModuleGraphConnection.addConnectionStates(current, state);
379
- }
380
- i++;
381
- }
382
-
383
- if (descended) continue;
384
-
385
- // `mod` finished without a `true` bailout.
386
- mod._isEvaluatingSideEffects = false;
387
- // Memoize only when the result is context-independent: no back-edge in
388
- // this subtree reached above `mod` (a cycle-free module or an SCC root).
389
- if (lowOf.get(mod) === indexOf.get(mod)) {
390
- mod._sideEffectsStateGraph = moduleGraph;
391
- mod._sideEffectsStateValue = current;
392
- }
393
- fMod.pop();
394
- fDeps.pop();
395
- fIdx.pop();
396
- fCur.pop();
397
- result = current;
398
- pending = current;
399
- if (fMod.length > 0) {
400
- const parent = fMod[fMod.length - 1];
401
- lowOf.set(
402
- parent,
403
- Math.min(
404
- /** @type {number} */ (lowOf.get(parent)),
405
- /** @type {number} */ (lowOf.get(mod))
406
- )
407
- );
408
- }
409
- }
410
-
411
- return result;
412
- };
413
-
414
- /**
415
- * @typedef {object} LoaderItem
416
- * @property {string} loader
417
- * @property {string | null | undefined | Record<string, EXPECTED_ANY>} options
418
- * @property {string | null=} ident
419
- * @property {string | null=} type
420
- */
421
-
422
- /**
423
- * @param {string} context absolute context path
424
- * @param {string | RawSourceMap} sourceMap a source map
425
- * @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
426
- * @returns {string | RawSourceMap} new source map
427
- */
428
- const contextifySourceMap = (context, sourceMap, associatedObjectForCache) => {
429
- if (typeof sourceMap === "string" || !Array.isArray(sourceMap.sources)) {
430
- return sourceMap;
431
- }
432
- const { sourceRoot } = sourceMap;
433
- /** @type {(source: string) => string} */
434
- const mapper = !sourceRoot
435
- ? (source) => source
436
- : sourceRoot.endsWith("/")
437
- ? (source) =>
438
- source.startsWith("/")
439
- ? `${sourceRoot.slice(0, -1)}${source}`
440
- : `${sourceRoot}${source}`
441
- : (source) =>
442
- source.startsWith("/")
443
- ? `${sourceRoot}${source}`
444
- : `${sourceRoot}/${source}`;
445
- const newSources = sourceMap.sources.map((source) =>
446
- contextifySourceUrl(context, mapper(source), associatedObjectForCache)
447
- );
448
- return {
449
- ...sourceMap,
450
- file: "x",
451
- sourceRoot: undefined,
452
- sources: newSources
453
- };
454
- };
455
-
456
- /**
457
- * @param {string | Buffer} input the input
458
- * @returns {string} the converted string
459
- */
460
- const asString = (input) => {
461
- if (Buffer.isBuffer(input)) {
462
- return input.toString("utf8");
463
- }
464
- return input;
465
- };
466
-
467
- /**
468
- * @param {string | Buffer} input the input
469
- * @returns {Buffer} the converted buffer
470
- */
471
- const asBuffer = (input) => {
472
- if (!Buffer.isBuffer(input)) {
473
- return Buffer.from(input, "utf8");
474
- }
475
- return input;
476
- };
477
-
478
- /** @typedef {[string | Buffer, string | RawSourceMap | undefined, PreparsedAst | undefined]} Result */
479
-
480
- /** @typedef {LoaderContext<EXPECTED_ANY>} AnyLoaderContext */
481
-
482
- /**
483
- * @deprecated Use the `readResource` hook instead.
484
- * @typedef {HookMap<FakeHook<AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>>>} DeprecatedReadResourceForScheme
485
- */
486
-
487
- const createCompilationHooks = () => {
488
- /** @type {HookMap<AsyncSeriesBailHook<[AnyLoaderContext], string | Buffer | null>>} */
489
- const readResource = new HookMap(
490
- () => new AsyncSeriesBailHook(["loaderContext"])
491
- );
492
- return {
493
- // TODO webpack 6 deprecate
494
- /**
495
- * @deprecated Use the `readResource` hook instead.
496
- * @type {DeprecatedReadResourceForScheme}
497
- */
498
- readResourceForScheme: new HookMap((scheme) => {
499
- const hook = readResource.for(scheme);
500
- return createFakeHook(
501
- /** @type {AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>} */ ({
502
- tap: (options, fn) =>
503
- hook.tap(options, (loaderContext) =>
504
- fn(
505
- loaderContext.resource,
506
- /** @type {NormalModule} */ (loaderContext._module)
507
- )
508
- ),
509
- tapAsync: (options, fn) =>
510
- hook.tapAsync(options, (loaderContext, callback) =>
511
- fn(
512
- loaderContext.resource,
513
- /** @type {NormalModule} */ (loaderContext._module),
514
- callback
515
- )
516
- ),
517
- tapPromise: (options, fn) =>
518
- hook.tapPromise(options, (loaderContext) =>
519
- fn(
520
- loaderContext.resource,
521
- /** @type {NormalModule} */ (loaderContext._module)
522
- )
523
- )
524
- })
525
- );
526
- }),
527
- /**
528
- * @since 5.58.0
529
- */
530
- readResource,
531
- /** @type {SyncHook<[AnyLoaderContext, NormalModule]>} */
532
- loader: new SyncHook(["loaderContext", "module"]),
533
- /** @type {SyncHook<[LoaderItem[], NormalModule, AnyLoaderContext]>} */
534
- beforeLoaders: new SyncHook(["loaders", "module", "loaderContext"]),
535
- /**
536
- * @type {SyncHook<[NormalModule]>}
537
- * @since 5.59.0
538
- */
539
- beforeParse: new SyncHook(["module"]),
540
- /**
541
- * @type {SyncHook<[NormalModule]>}
542
- * @since 5.59.0
543
- */
544
- beforeSnapshot: new SyncHook(["module"]),
545
- /**
546
- * Async since 5.111.0, so a tap can await work of its own — minifying an
547
- * asset, say, which before only a loader could do. `tap` keeps working.
548
- * @type {AsyncSeriesWaterfallHook<[Result, NormalModule]>}
549
- * @since 5.99.0
550
- */
551
- processResult: new AsyncSeriesWaterfallHook(["result", "module"]),
552
- /**
553
- * @type {AsyncSeriesBailHook<[NormalModule, NeedBuildContext], boolean>}
554
- * @since 5.49.0
555
- */
556
- needBuild: new AsyncSeriesBailHook(["module", "context"])
557
- };
558
- };
559
-
560
- /**
561
- * @typedef {ReturnType<typeof createCompilationHooks>} NormalModuleCompilationHooks
562
- */
563
-
564
- /**
565
- * @template {NormalModuleTypes | ""} [T=NormalModuleTypes | ""]
566
- * @typedef {object} NormalModuleCreateData
567
- * @property {string=} layer an optional layer in which the module is
568
- * @property {T} type module type. When deserializing, this is set to an empty string "".
569
- * @property {string} request request string
570
- * @property {string} userRequest request intended by user (without loaders from config)
571
- * @property {string} rawRequest request without resolving
572
- * @property {LoaderItem[]} loaders list of loaders
573
- * @property {string} resource path + query of the real resource
574
- * @property {(ResourceSchemeData & Partial<ResolveRequest>)=} resourceResolveData resource resolve data
575
- * @property {string} context context directory for resolving
576
- * @property {string=} matchResource path + query of the matched resource (virtual)
577
- * @property {ParserByType[T]} parser the parser used
578
- * @property {ParserOptionsByType[T]=} parserOptions the options of the parser used
579
- * @property {GeneratorByType[T]} generator the generator used
580
- * @property {GeneratorOptionsByType[T]=} generatorOptions the options of the generator used
581
- * @property {ResolveOptions=} resolveOptions options used for resolving requests from this module
582
- * @property {boolean} extractSourceMap enable/disable extracting source map
583
- */
584
-
585
- /**
586
- * @typedef {(resourcePath: string, getLoaderContext: (resourcePath: string) => AnyLoaderContext) => Promise<string | Buffer<ArrayBufferLike>>} ReadResource
587
- */
588
-
589
- /**
590
- * Defines the build info properties of normal modules (filesystem-backed, loader-processed).
591
- * @typedef {object} KnownNormalModuleBuildInfo
592
- * @property {boolean=} parsed
593
- * @property {string=} hash
594
- * @property {FileSystemDependencies=} fileDependencies
595
- * @property {FileSystemDependencies=} contextDependencies
596
- * @property {FileSystemDependencies=} missingDependencies
597
- * @property {FileSystemDependencies=} buildDependencies
598
- * @property {ValueCacheVersions=} valueDependencies
599
- * @property {(InstanceType<Snapshot> | null)=} snapshot
600
- * @property {string=} resourceIntegrity using in HttpUriPlugin
601
- */
602
-
603
- /** @typedef {BuildInfo & KnownNormalModuleBuildInfo} NormalModuleBuildInfo */
604
-
605
- const normalModuleHooksRegistry = createHooksRegistry(createCompilationHooks);
606
-
607
- class NormalModule extends Module {
608
- /**
609
- * @param {Compilation} compilation the compilation
610
- * @returns {NormalModuleCompilationHooks} the attached hooks
611
- */
612
- static getCompilationHooks(compilation) {
613
- return normalModuleHooksRegistry(compilation);
614
- }
615
-
616
- /**
617
- * @param {NormalModuleCreateData} options options object
618
- */
619
- constructor({
620
- layer,
621
- type,
622
- request,
623
- userRequest,
624
- rawRequest,
625
- loaders,
626
- resource,
627
- resourceResolveData,
628
- context,
629
- matchResource,
630
- parser,
631
- parserOptions,
632
- generator,
633
- generatorOptions,
634
- resolveOptions,
635
- extractSourceMap
636
- }) {
637
- super(type, context || getContext(resource), layer);
638
-
639
- // Info from Factory
640
- /** @type {NormalModuleCreateData['request']} */
641
- this.request = request;
642
- /** @type {NormalModuleCreateData['userRequest']} */
643
- this.userRequest = userRequest;
644
- /** @type {NormalModuleCreateData['rawRequest']} */
645
- this.rawRequest = rawRequest;
646
- /** @type {boolean} */
647
- this.binary = /^(?:asset|webassembly)\b/.test(type);
648
- /** @type {NormalModuleCreateData['parser'] | undefined} */
649
- this.parser = parser;
650
- /** @type {NormalModuleCreateData['parserOptions']} */
651
- this.parserOptions = parserOptions;
652
- /** @type {NormalModuleCreateData['generator'] | undefined} */
653
- this.generator = generator;
654
- /** @type {NormalModuleCreateData['generatorOptions']} */
655
- this.generatorOptions = generatorOptions;
656
- /** @type {NormalModuleCreateData['resource']} */
657
- this.resource = resource;
658
- /** @type {NormalModuleCreateData['resourceResolveData']} */
659
- this.resourceResolveData = resourceResolveData;
660
- /** @type {NormalModuleCreateData['matchResource']} */
661
- this.matchResource = matchResource;
662
- /** @type {NormalModuleCreateData['loaders']} */
663
- this.loaders = loaders;
664
- if (resolveOptions !== undefined) {
665
- // already declared in super class
666
- /** @type {NormalModuleCreateData['resolveOptions']} */
667
- this.resolveOptions = resolveOptions;
668
- }
669
- /** @type {NormalModuleCreateData['extractSourceMap']} */
670
- this.extractSourceMap = extractSourceMap;
671
-
672
- // Set by HotModuleReplacementPlugin via NormalModuleFactory's `module` hook
673
- /** @type {boolean} */
674
- this.hot = false;
675
-
676
- // Info from Build
677
- // Redeclared with the normal module specific shape (see KnownNormalModuleBuildInfo)
678
- /** @type {NormalModuleBuildInfo | undefined} */
679
- this.buildInfo = undefined;
680
- /** @type {Error | null} */
681
- this.error = null;
682
- /**
683
- * @private
684
- * @type {Source | null}
685
- */
686
- this._source = null;
687
- // Set at build time; declared here so the instance shape is fixed at construction
688
- /**
689
- * @private
690
- * @type {PreparsedAst | null}
691
- */
692
- this._ast = null;
693
- /**
694
- * @private
695
- * @type {Map<undefined | SourceType, number> | undefined}
696
- */
697
- this._sourceSizes = undefined;
698
- /**
699
- * @private
700
- * @type {undefined | SourceTypes}
701
- */
702
- this._sourceTypes = undefined;
703
- // Cache
704
- /**
705
- * @private
706
- * @type {BuildMeta}
707
- */
708
- this._lastSuccessfulBuildMeta = {};
709
- /**
710
- * @private
711
- * @type {boolean}
712
- */
713
- this._forceBuild = true;
714
- /**
715
- * @type {boolean}
716
- */
717
- this._isEvaluatingSideEffects = false;
718
- /**
719
- * @type {WeakSet<ModuleGraph> | undefined}
720
- */
721
- this._addedSideEffectsBailout = undefined;
722
- /**
723
- * Memoizes the result of `getSideEffectsConnectionState`. The
724
- * graph slot keys the cached value to the `ModuleGraph` it was
725
- * computed against so stale values never leak across compilations
726
- * — a walk that targets a different graph just overwrites both
727
- * slots. Populated only for context-independent results (cycle-free
728
- * or SCC-root modules; see `walkSideEffects`).
729
- * @type {ModuleGraph | undefined}
730
- */
731
- this._sideEffectsStateGraph = undefined;
732
- /** @type {ConnectionState | undefined} */
733
- this._sideEffectsStateValue = undefined;
734
- }
735
-
736
- /**
737
- * Returns the unique identifier used to reference this module.
738
- * @returns {string} a unique identifier of the module
739
- */
740
- identifier() {
741
- if (this.layer === null) {
742
- if (this.type === JAVASCRIPT_MODULE_TYPE_AUTO) {
743
- return this.request;
744
- }
745
- return `${this.type}|${this.request}`;
746
- }
747
- return `${this.type}|${this.request}|${this.layer}`;
748
- }
749
-
750
- /**
751
- * Returns a human-readable identifier for this module.
752
- * @param {RequestShortener} requestShortener the request shortener
753
- * @returns {string} a user readable identifier of the module
754
- */
755
- readableIdentifier(requestShortener) {
756
- return /** @type {string} */ (requestShortener.shorten(this.userRequest));
757
- }
758
-
759
- /**
760
- * @returns {string | null} return the resource path
761
- */
762
- getResource() {
763
- return this.matchResource || this.resource;
764
- }
765
-
766
- /**
767
- * Gets the library identifier.
768
- * @param {LibIdentOptions} options options
769
- * @returns {LibIdent | null} an identifier for library inclusion
770
- */
771
- libIdent(options) {
772
- let ident = contextify(
773
- options.context,
774
- this.userRequest,
775
- options.associatedObjectForCache
776
- );
777
- if (this.layer) ident = `(${this.layer})/${ident}`;
778
- return ident;
779
- }
780
-
781
- /**
782
- * Returns the path used when matching this module against rule conditions.
783
- * @returns {NameForCondition | null} absolute path which should be used for condition matching (usually the resource path)
784
- */
785
- nameForCondition() {
786
- const resource = /** @type {string} */ (this.getResource());
787
- const idx = resource.indexOf("?");
788
- if (idx >= 0) return resource.slice(0, idx);
789
- return resource;
790
- }
791
-
792
- /**
793
- * Assuming this module is in the cache. Update the (cached) module with
794
- * the fresh module from the factory. Usually updates internal references
795
- * and properties.
796
- * @param {Module} module fresh module
797
- * @returns {void}
798
- */
799
- updateCacheModule(module) {
800
- super.updateCacheModule(module);
801
- const m = /** @type {NormalModule} */ (module);
802
- this.binary = m.binary;
803
- this.request = m.request;
804
- this.userRequest = m.userRequest;
805
- this.rawRequest = m.rawRequest;
806
- this.parser = m.parser;
807
- this.parserOptions = m.parserOptions;
808
- this.generator = m.generator;
809
- this.generatorOptions = m.generatorOptions;
810
- this.resource = m.resource;
811
- this.resourceResolveData = m.resourceResolveData;
812
- this.context = m.context;
813
- this.matchResource = m.matchResource;
814
- this.loaders = m.loaders;
815
- this.extractSourceMap = m.extractSourceMap;
816
- }
817
-
818
- /**
819
- * Assuming this module is in the cache. Remove internal references to allow freeing some memory.
820
- */
821
- cleanupForCache() {
822
- // Make sure to cache types and sizes before cleanup when this module has been built
823
- // They are accessed by the stats and we don't want them to crash after cleanup
824
- // TODO reconsider this for webpack 6
825
- if (this.buildInfo) {
826
- if (this._sourceTypes === undefined) this.getSourceTypes();
827
- for (const type of /** @type {SourceTypes} */ (this._sourceTypes)) {
828
- this.size(type);
829
- }
830
- }
831
- super.cleanupForCache();
832
- this.parser = undefined;
833
- this.parserOptions = undefined;
834
- this.generator = undefined;
835
- this.generatorOptions = undefined;
836
- // Drop the side-effects memoization so a long-lived module doesn't
837
- // strong-reference a stale `ModuleGraph`/`Compilation` for graphs
838
- // that never get re-queried with a fresh one.
839
- this._sideEffectsStateGraph = undefined;
840
- this._sideEffectsStateValue = undefined;
841
- }
842
-
843
- /**
844
- * Releases the cached parser between incremental rebuilds so it doesn't keep
845
- * the previous compilation alive.
846
- * @returns {void}
847
- */
848
- _cleanupParserForCache() {
849
- this.parser = undefined;
850
- }
851
-
852
- /**
853
- * Re-acquire factory-derived helpers (parser/generator) for an incremental
854
- * rebuild so this compilation's plugin hooks apply.
855
- * @param {NormalModuleFactory} normalModuleFactory the normal module factory
856
- * @returns {void}
857
- */
858
- _restoreParserAndGenerator(normalModuleFactory) {
859
- this.parser = normalModuleFactory.getParser(this.type, this.parserOptions);
860
- this.generator = normalModuleFactory.getGenerator(
861
- this.type,
862
- this.generatorOptions
863
- );
864
- }
865
-
866
- /**
867
- * Module should be unsafe cached. Get data that's needed for that.
868
- * This data will be passed to restoreFromUnsafeCache later.
869
- * @returns {UnsafeCacheData} cached data
870
- */
871
- getUnsafeCacheData() {
872
- const data = super.getUnsafeCacheData();
873
- data.parserOptions = this.parserOptions;
874
- data.generatorOptions = this.generatorOptions;
875
- return data;
876
- }
877
-
878
- /**
879
- * restore unsafe cache data
880
- * @param {UnsafeCacheData} unsafeCacheData data from getUnsafeCacheData
881
- * @param {NormalModuleFactory} normalModuleFactory the normal module factory handling the unsafe caching
882
- */
883
- restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory) {
884
- this._restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory);
885
- }
886
-
887
- /**
888
- * restore unsafe cache data
889
- * @param {UnsafeCacheData} unsafeCacheData data from getUnsafeCacheData
890
- * @param {NormalModuleFactory} normalModuleFactory the normal module factory handling the unsafe caching
891
- */
892
- _restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory) {
893
- super._restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory);
894
- this.parserOptions = unsafeCacheData.parserOptions;
895
- this.parser = normalModuleFactory.getParser(this.type, this.parserOptions);
896
- this.generatorOptions = unsafeCacheData.generatorOptions;
897
- this.generator = normalModuleFactory.getGenerator(
898
- this.type,
899
- this.generatorOptions
900
- );
901
- // we assume the generator behaves identically and keep cached sourceTypes/Sizes
902
- }
903
-
904
- /**
905
- * @param {string} context the compilation context
906
- * @param {string} name the asset name
907
- * @param {string | Buffer} content the content
908
- * @param {(string | RawSourceMap)=} sourceMap an optional source map
909
- * @param {AssociatedObjectForCache=} associatedObjectForCache object for caching
910
- * @returns {Source} the created source
911
- */
912
- createSourceForAsset(
913
- context,
914
- name,
915
- content,
916
- sourceMap,
917
- associatedObjectForCache
918
- ) {
919
- if (sourceMap) {
920
- if (
921
- typeof sourceMap === "string" &&
922
- (this.useSourceMap || this.useSimpleSourceMap)
923
- ) {
924
- return new OriginalSource(
925
- content,
926
- contextifySourceUrl(context, sourceMap, associatedObjectForCache)
927
- );
928
- }
929
-
930
- if (this.useSourceMap) {
931
- return new SourceMapSource(
932
- content,
933
- name,
934
- contextifySourceMap(
935
- context,
936
- /** @type {RawSourceMap} */
937
- (sourceMap),
938
- associatedObjectForCache
939
- )
940
- );
941
- }
942
- }
943
-
944
- return new RawSource(content);
945
- }
946
-
947
- /**
948
- * @private
949
- * @template T
950
- * @param {ResolverWithOptions} resolver a resolver
951
- * @param {WebpackOptions} options webpack options
952
- * @param {Compilation} compilation the compilation
953
- * @param {InputFileSystem} fs file system from reading
954
- * @param {NormalModuleCompilationHooks} hooks the hooks
955
- * @returns {import("../declarations/LoaderContext").LoaderContext<T>} loader context
956
- */
957
- _createLoaderContext(resolver, options, compilation, fs, hooks) {
958
- const { requestShortener } = compilation.runtimeTemplate;
959
- const getCurrentLoaderName = () => {
960
- const currentLoader = this.getCurrentLoader(
961
- /** @type {AnyLoaderContext} */
962
- (loaderContext)
963
- );
964
- if (!currentLoader) return "(not in loader scope)";
965
- return requestShortener.shorten(currentLoader.loader);
966
- };
967
- /**
968
- * @returns {ResolveContext} resolve context
969
- */
970
- const getResolveContext = () => ({
971
- fileDependencies: {
972
- add: (d) =>
973
- /** @type {AnyLoaderContext} */
974
- (loaderContext).addDependency(d)
975
- },
976
- contextDependencies: {
977
- add: (d) =>
978
- /** @type {AnyLoaderContext} */
979
- (loaderContext).addContextDependency(d)
980
- },
981
- missingDependencies: {
982
- add: (d) =>
983
- /** @type {AnyLoaderContext} */
984
- (loaderContext).addMissingDependency(d)
985
- }
986
- });
987
- const getAbsolutify = memoize(() =>
988
- absolutify.bindCache(compilation.compiler.root)
989
- );
990
- const getAbsolutifyInContext = memoize(() =>
991
- absolutify.bindContextCache(
992
- /** @type {string} */
993
- (this.context),
994
- compilation.compiler.root
995
- )
996
- );
997
- const getContextify = memoize(() =>
998
- contextify.bindCache(compilation.compiler.root)
999
- );
1000
- const getContextifyInContext = memoize(() =>
1001
- contextify.bindContextCache(
1002
- /** @type {string} */
1003
- (this.context),
1004
- compilation.compiler.root
1005
- )
1006
- );
1007
- const utils = {
1008
- /**
1009
- * @param {string} context context
1010
- * @param {string} request request
1011
- * @returns {string} result
1012
- */
1013
- absolutify: (context, request) =>
1014
- context === this.context
1015
- ? getAbsolutifyInContext()(request)
1016
- : getAbsolutify()(context, request),
1017
- /**
1018
- * @param {string} context context
1019
- * @param {string} request request
1020
- * @returns {string} result
1021
- */
1022
- contextify: (context, request) =>
1023
- context === this.context
1024
- ? getContextifyInContext()(request)
1025
- : getContextify()(context, request),
1026
- /**
1027
- * @param {HashFunction=} type type
1028
- * @returns {Hash} hash
1029
- */
1030
- createHash: (type) =>
1031
- createHash(type || compilation.outputOptions.hashFunction)
1032
- };
1033
- /** @type {NormalModuleLoaderContext<T>} */
1034
- const loaderContext = {
1035
- version: 2,
1036
- /** @type {LoaderContext<EXPECTED_ANY>["getOptions"]} */
1037
- getOptions: (/** @type {EXPECTED_ANY} */ schema = undefined) => {
1038
- const loader = this.getCurrentLoader(
1039
- /** @type {AnyLoaderContext} */
1040
- (loaderContext)
1041
- );
1042
-
1043
- let { options } = /** @type {LoaderItem} */ (loader);
1044
-
1045
- if (typeof options === "string") {
1046
- if (options.startsWith("{") && options.endsWith("}")) {
1047
- try {
1048
- options =
1049
- /** @type {LoaderItem["options"]} */
1050
- (parseJson(options));
1051
- } catch (err) {
1052
- throw new Error(
1053
- `Cannot parse string options: ${
1054
- /** @type {Error} */ (err).message
1055
- }`,
1056
- { cause: err }
1057
- );
1058
- }
1059
- } else {
1060
- options = querystring.parse(options, "&", "=", {
1061
- maxKeys: 0
1062
- });
1063
- }
1064
- }
1065
-
1066
- if (options === null || options === undefined) {
1067
- options = {};
1068
- }
1069
-
1070
- if (schema && compilation.options.validate) {
1071
- let name = "Loader";
1072
- let baseDataPath = "options";
1073
- /** @type {RegExpExecArray | null} */
1074
- let match;
1075
- if (schema.title && (match = /^(.+) (.+)$/.exec(schema.title))) {
1076
- [, name, baseDataPath] = match;
1077
- }
1078
- getValidate()(schema, /** @type {EXPECTED_OBJECT} */ (options), {
1079
- name,
1080
- baseDataPath
1081
- });
1082
- }
1083
-
1084
- return /** @type {T} */ (options);
1085
- },
1086
- /** @type {LoaderContext<EXPECTED_ANY>["emitWarning"]} */
1087
- emitWarning: (warning) => {
1088
- if (!(warning instanceof Error)) {
1089
- warning = new (getNonErrorEmittedError())(warning);
1090
- }
1091
- this.addWarning(
1092
- new (getModuleWarning())(warning, {
1093
- from: getCurrentLoaderName()
1094
- })
1095
- );
1096
- },
1097
- /** @type {LoaderContext<EXPECTED_ANY>["emitError"]} */
1098
- emitError: (error) => {
1099
- if (!(error instanceof Error)) {
1100
- error = new (getNonErrorEmittedError())(error);
1101
- }
1102
- this.addError(
1103
- new (getModuleError())(error, {
1104
- from: getCurrentLoaderName()
1105
- })
1106
- );
1107
- },
1108
- /** @type {LoaderContext<EXPECTED_ANY>["getLogger"]} */
1109
- getLogger: (name) => {
1110
- const currentLoader = this.getCurrentLoader(
1111
- /** @type {AnyLoaderContext} */
1112
- (loaderContext)
1113
- );
1114
- return compilation.getLogger(() =>
1115
- [currentLoader && currentLoader.loader, name, this.identifier()]
1116
- .filter(Boolean)
1117
- .join("|")
1118
- );
1119
- },
1120
- /** @type {LoaderContext<EXPECTED_ANY>["resolve"]} */
1121
- resolve(context, request, callback) {
1122
- resolver.resolve({}, context, request, getResolveContext(), callback);
1123
- },
1124
- /** @type {LoaderContext<EXPECTED_ANY>["getResolve"]} */
1125
- getResolve(options) {
1126
- const child = options ? resolver.withOptions(options) : resolver;
1127
- return /** @type {ReturnType<import("../declarations/LoaderContext").NormalModuleLoaderContext<T>["getResolve"]>} */ (
1128
- (context, request, callback) => {
1129
- if (callback) {
1130
- child.resolve(
1131
- {},
1132
- context,
1133
- request,
1134
- getResolveContext(),
1135
- callback
1136
- );
1137
- } else {
1138
- return new Promise((resolve, reject) => {
1139
- child.resolve(
1140
- {},
1141
- context,
1142
- request,
1143
- getResolveContext(),
1144
- (err, result) => {
1145
- if (err) reject(err);
1146
- else resolve(result);
1147
- }
1148
- );
1149
- });
1150
- }
1151
- }
1152
- );
1153
- },
1154
- /** @type {LoaderContext<EXPECTED_ANY>["emitFile"]} */
1155
- emitFile: (name, content, sourceMap, assetInfo) => {
1156
- const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
1157
-
1158
- if (!buildInfo.assets) {
1159
- buildInfo.assets = Object.create(null);
1160
- buildInfo.assetsInfo = new Map();
1161
- }
1162
-
1163
- const assets =
1164
- /** @type {NonNullable<KnownBuildInfo["assets"]>} */
1165
- (buildInfo.assets);
1166
- const assetsInfo =
1167
- /** @type {NonNullable<KnownBuildInfo["assetsInfo"]>} */
1168
- (buildInfo.assetsInfo);
1169
-
1170
- assets[name] = this.createSourceForAsset(
1171
- options.context,
1172
- name,
1173
- content,
1174
- sourceMap,
1175
- compilation.compiler.root
1176
- );
1177
- assetsInfo.set(name, assetInfo);
1178
- },
1179
- addBuildDependency: (dep) => {
1180
- const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
1181
-
1182
- if (buildInfo.buildDependencies === undefined) {
1183
- buildInfo.buildDependencies = new LazySet();
1184
- }
1185
- buildInfo.buildDependencies.add(dep);
1186
- },
1187
- utils,
1188
- rootContext: options.context,
1189
- webpack: true,
1190
- sourceMap: Boolean(this.useSourceMap),
1191
- mode: options.mode || "production",
1192
- hashFunction: options.output.hashFunction,
1193
- hashDigest: options.output.hashDigest,
1194
- hashDigestLength: options.output.hashDigestLength,
1195
- hashSalt: options.output.hashSalt,
1196
- _module: this,
1197
- _compilation: compilation,
1198
- _compiler: compilation.compiler,
1199
- fs
1200
- };
1201
-
1202
- Object.assign(loaderContext, options.loader);
1203
- createLoaderContext(loaderContext);
1204
-
1205
- hooks.loader.call(
1206
- /** @type {AnyLoaderContext} */
1207
- (loaderContext),
1208
- this
1209
- );
1210
-
1211
- return /** @type {AnyLoaderContext} */ (loaderContext);
1212
- }
1213
-
1214
- /**
1215
- * @param {AnyLoaderContext} loaderContext loader context
1216
- * @param {number} index index
1217
- * @returns {LoaderItem | null} loader
1218
- */
1219
- getCurrentLoader(loaderContext, index = loaderContext.loaderIndex) {
1220
- if (
1221
- this.loaders &&
1222
- this.loaders.length &&
1223
- index < this.loaders.length &&
1224
- index >= 0 &&
1225
- this.loaders[index]
1226
- ) {
1227
- return this.loaders[index];
1228
- }
1229
- return null;
1230
- }
1231
-
1232
- /**
1233
- * @param {string} context the compilation context
1234
- * @param {string | Buffer} content the content
1235
- * @param {(string | RawSourceMap | null)=} sourceMap an optional source map
1236
- * @param {AssociatedObjectForCache=} associatedObjectForCache object for caching
1237
- * @returns {Source} the created source
1238
- */
1239
- createSource(context, content, sourceMap, associatedObjectForCache) {
1240
- if (Buffer.isBuffer(content)) {
1241
- return new RawSource(content);
1242
- }
1243
-
1244
- // if there is no identifier return raw source
1245
- if (!this.identifier) {
1246
- return new RawSource(content);
1247
- }
1248
-
1249
- // from here on we assume we have an identifier
1250
- const identifier = this.identifier();
1251
-
1252
- if (this.useSourceMap && sourceMap) {
1253
- return new SourceMapSource(
1254
- content,
1255
- contextifySourceUrl(context, identifier, associatedObjectForCache),
1256
- contextifySourceMap(context, sourceMap, associatedObjectForCache)
1257
- );
1258
- }
1259
-
1260
- if (this.useSourceMap || this.useSimpleSourceMap) {
1261
- return new OriginalSource(
1262
- content,
1263
- contextifySourceUrl(context, identifier, associatedObjectForCache)
1264
- );
1265
- }
1266
-
1267
- return new RawSource(content);
1268
- }
1269
-
1270
- /**
1271
- * @param {WebpackOptions} options webpack options
1272
- * @param {Compilation} compilation the compilation
1273
- * @param {ResolverWithOptions} resolver the resolver
1274
- * @param {InputFileSystem} fs the file system
1275
- * @param {NormalModuleCompilationHooks} hooks the hooks
1276
- * @param {BuildCallback} callback callback function
1277
- * @returns {void}
1278
- */
1279
- _doBuild(options, compilation, resolver, fs, hooks, callback) {
1280
- const loaderContext = this._createLoaderContext(
1281
- resolver,
1282
- options,
1283
- compilation,
1284
- fs,
1285
- hooks
1286
- );
1287
-
1288
- /**
1289
- * @param {Error | null} err err
1290
- * @param {(Result | null)=} result_ result
1291
- * @returns {void}
1292
- */
1293
- const processResult = (err, result_) => {
1294
- if (err) {
1295
- if (!(err instanceof Error)) {
1296
- err = new (getNonErrorEmittedError())(err);
1297
- }
1298
- const currentLoader = this.getCurrentLoader(loaderContext);
1299
- const error = new (getModuleBuildError())(err, {
1300
- from:
1301
- currentLoader &&
1302
- compilation.runtimeTemplate.requestShortener.shorten(
1303
- currentLoader.loader
1304
- )
1305
- });
1306
- return callback(error);
1307
- }
1308
- hooks.processResult.callAsync(
1309
- /** @type {Result} */
1310
- (result_),
1311
- this,
1312
- (hookErr, hookResult) => {
1313
- if (hookErr) {
1314
- // Named, so a tap's failure is not read as a loader's.
1315
- return callback(
1316
- new (getModuleBuildError())(
1317
- hookErr instanceof Error
1318
- ? hookErr
1319
- : new (getNonErrorEmittedError())(hookErr),
1320
- { from: "processResult hook" }
1321
- )
1322
- );
1323
- }
1324
-
1325
- finishResult(/** @type {Result} */ (hookResult));
1326
- }
1327
- );
1328
- };
1329
-
1330
- /**
1331
- * @param {Result} result the result the hook settled on
1332
- * @returns {void}
1333
- */
1334
- const finishResult = (result) => {
1335
- const source = result[0];
1336
- const sourceMap = result.length >= 1 ? result[1] : null;
1337
- const extraInfo = result.length >= 2 ? result[2] : null;
1338
-
1339
- if (!Buffer.isBuffer(source) && typeof source !== "string") {
1340
- const currentLoader = this.getCurrentLoader(loaderContext, 0);
1341
- const err = new Error(
1342
- `Final loader (${
1343
- currentLoader
1344
- ? compilation.runtimeTemplate.requestShortener.shorten(
1345
- currentLoader.loader
1346
- )
1347
- : "unknown"
1348
- }) didn't return a Buffer or String`
1349
- );
1350
- const error = new (getModuleBuildError())(err);
1351
- return callback(error);
1352
- }
1353
-
1354
- const isBinaryModule =
1355
- this.generatorOptions && this.generatorOptions.binary !== undefined
1356
- ? this.generatorOptions.binary
1357
- : this.binary;
1358
-
1359
- this._source = this.createSource(
1360
- options.context,
1361
- isBinaryModule ? asBuffer(source) : asString(source),
1362
- sourceMap,
1363
- compilation.compiler.root
1364
- );
1365
- if (this._sourceSizes !== undefined) this._sourceSizes.clear();
1366
- /** @type {PreparsedAst | null} */
1367
- this._ast =
1368
- typeof extraInfo === "object" &&
1369
- extraInfo !== null &&
1370
- extraInfo.webpackAST !== undefined
1371
- ? extraInfo.webpackAST
1372
- : null;
1373
- return callback();
1374
- };
1375
-
1376
- const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
1377
-
1378
- buildInfo.fileDependencies = new LazySet();
1379
- buildInfo.contextDependencies = new LazySet();
1380
- buildInfo.missingDependencies = new LazySet();
1381
- buildInfo.cacheable = true;
1382
-
1383
- try {
1384
- hooks.beforeLoaders.call(
1385
- this.loaders,
1386
- this,
1387
- /** @type {AnyLoaderContext} */
1388
- (loaderContext)
1389
- );
1390
- } catch (err) {
1391
- processResult(/** @type {Error} */ (err));
1392
- return;
1393
- }
1394
-
1395
- if (this.loaders.length > 0) {
1396
- /** @type {NormalModuleBuildInfo} */
1397
- (this.buildInfo).buildDependencies = new LazySet();
1398
- }
1399
-
1400
- runLoaders(
1401
- {
1402
- resource: this.resource,
1403
- loaders: this.loaders,
1404
- context: loaderContext,
1405
- /**
1406
- * @param {AnyLoaderContext} loaderContext the loader context
1407
- * @param {string} resourcePath the resource Path
1408
- * @param {(err: Error | null, result?: string | Buffer, sourceMap?: Result[1]) => void} callback callback
1409
- * @returns {Promise<void>}
1410
- */
1411
- processResource: async (loaderContext, resourcePath, callback) => {
1412
- /** @type {ReadResource} */
1413
- const readResource = (resourcePath, getLoaderContext) => {
1414
- const scheme = getScheme(resourcePath);
1415
- return new Promise((resolve, reject) => {
1416
- hooks.readResource
1417
- .for(scheme)
1418
- .callAsync(getLoaderContext(resourcePath), (err, result) => {
1419
- if (err) {
1420
- reject(err);
1421
- } else {
1422
- if (typeof result !== "string" && !result) {
1423
- return reject(
1424
- new (getUnhandledSchemeError())(
1425
- /** @type {string} */
1426
- (scheme),
1427
- resourcePath
1428
- )
1429
- );
1430
- }
1431
- resolve(result);
1432
- }
1433
- });
1434
- });
1435
- };
1436
- try {
1437
- const result = await readResource(
1438
- resourcePath,
1439
- () => loaderContext
1440
- );
1441
- if (
1442
- this.extractSourceMap &&
1443
- (this.useSourceMap || this.useSimpleSourceMap)
1444
- ) {
1445
- try {
1446
- const { source, sourceMap } = await getExtractSourceMap()(
1447
- result,
1448
- resourcePath,
1449
- /** @type {ReadResource} */
1450
- (resourcePath) =>
1451
- readResource(
1452
- resourcePath,
1453
- (resourcePath) =>
1454
- /** @type {AnyLoaderContext} */
1455
- ({
1456
- addDependency(dependency) {
1457
- loaderContext.addDependency(dependency);
1458
- },
1459
- fs: loaderContext.fs,
1460
- _module: undefined,
1461
- resourcePath,
1462
- resource: resourcePath
1463
- })
1464
- ).catch((err) => {
1465
- throw new Error(
1466
- `Failed to parse source map. ${
1467
- /** @type {Error} */ (err).message
1468
- }`
1469
- );
1470
- })
1471
- );
1472
- return callback(null, source, sourceMap);
1473
- } catch (err) {
1474
- this.addWarning(
1475
- new (getModuleWarning())(/** @type {Error} */ (err))
1476
- );
1477
- return callback(null, result);
1478
- }
1479
- }
1480
- return callback(null, result);
1481
- } catch (error) {
1482
- return callback(/** @type {Error} */ (error));
1483
- }
1484
- }
1485
- },
1486
- (err, result) => {
1487
- // Cleanup loaderContext to avoid leaking memory in ICs
1488
- loaderContext._compilation =
1489
- loaderContext._compiler =
1490
- loaderContext._module =
1491
- loaderContext.fs =
1492
- /** @type {EXPECTED_ANY} */
1493
- (undefined);
1494
-
1495
- if (!result) {
1496
- /** @type {NormalModuleBuildInfo} */
1497
- (this.buildInfo).cacheable = false;
1498
- return processResult(
1499
- err || new Error("No result from loader-runner processing"),
1500
- null
1501
- );
1502
- }
1503
-
1504
- const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
1505
-
1506
- const fileDependencies =
1507
- /** @type {NonNullable<KnownNormalModuleBuildInfo["fileDependencies"]>} */
1508
- (buildInfo.fileDependencies);
1509
- const contextDependencies =
1510
- /** @type {NonNullable<KnownNormalModuleBuildInfo["contextDependencies"]>} */
1511
- (buildInfo.contextDependencies);
1512
- const missingDependencies =
1513
- /** @type {NonNullable<KnownNormalModuleBuildInfo["missingDependencies"]>} */
1514
- (buildInfo.missingDependencies);
1515
-
1516
- fileDependencies.addAll(result.fileDependencies);
1517
- contextDependencies.addAll(result.contextDependencies);
1518
- missingDependencies.addAll(result.missingDependencies);
1519
- for (const loader of this.loaders) {
1520
- const buildDependencies =
1521
- /** @type {NonNullable<KnownNormalModuleBuildInfo["buildDependencies"]>} */
1522
- (buildInfo.buildDependencies);
1523
-
1524
- buildDependencies.add(loader.loader);
1525
- }
1526
- buildInfo.cacheable = buildInfo.cacheable && result.cacheable;
1527
- if (result.notCacheableReasons.length > 0) {
1528
- getBuildDiagnostics(buildInfo).notCacheableReasons =
1529
- result.notCacheableReasons;
1530
- }
1531
- processResult(err, result.result);
1532
- }
1533
- );
1534
- }
1535
-
1536
- /**
1537
- * @param {Error} error the error
1538
- * @returns {void}
1539
- */
1540
- markModuleAsErrored(error) {
1541
- // Restore build meta from successful build to keep importing state
1542
- this.buildMeta = { ...this._lastSuccessfulBuildMeta };
1543
- this.error = error;
1544
- this.addError(error);
1545
- }
1546
-
1547
- /**
1548
- * @param {Exclude<NoParse, EXPECTED_ANY[]>} rule rule
1549
- * @param {string} content content
1550
- * @returns {boolean} result
1551
- */
1552
- applyNoParseRule(rule, content) {
1553
- // must start with "rule" if rule is a string
1554
- if (typeof rule === "string") {
1555
- return content.startsWith(rule);
1556
- }
1557
-
1558
- if (typeof rule === "function") {
1559
- return rule(content);
1560
- }
1561
- // we assume rule is a regexp
1562
- return rule.test(content);
1563
- }
1564
-
1565
- /**
1566
- * @param {undefined | NoParse} noParseRule no parse rule
1567
- * @param {string} request request
1568
- * @returns {boolean} check if module should not be parsed, returns "true" if the module should !not! be parsed, returns "false" if the module !must! be parsed
1569
- */
1570
- shouldPreventParsing(noParseRule, request) {
1571
- // if no noParseRule exists, return false
1572
- // the module !must! be parsed.
1573
- if (!noParseRule) {
1574
- return false;
1575
- }
1576
-
1577
- // we only have one rule to check
1578
- if (!Array.isArray(noParseRule)) {
1579
- // returns "true" if the module is !not! to be parsed
1580
- return this.applyNoParseRule(noParseRule, request);
1581
- }
1582
-
1583
- for (let i = 0; i < noParseRule.length; i++) {
1584
- const rule = noParseRule[i];
1585
- // early exit on first truthy match
1586
- // this module is !not! to be parsed
1587
- if (this.applyNoParseRule(rule, request)) {
1588
- return true;
1589
- }
1590
- }
1591
- // no match found, so this module !should! be parsed
1592
- return false;
1593
- }
1594
-
1595
- /**
1596
- * @param {Compilation} compilation compilation
1597
- * @private
1598
- */
1599
- _initBuildHash(compilation) {
1600
- const hash = createHash(compilation.outputOptions.hashFunction);
1601
- if (this._source) {
1602
- hash.update("source");
1603
- this._source.updateHash(hash);
1604
- }
1605
- hash.update("meta");
1606
- hash.update(JSON.stringify(this.buildMeta));
1607
- /** @type {NormalModuleBuildInfo} */
1608
- (this.buildInfo).hash = hash.digest("hex");
1609
- }
1610
-
1611
- /**
1612
- * Builds the module using the provided compilation context.
1613
- * @param {WebpackOptions} options webpack options
1614
- * @param {Compilation} compilation the compilation
1615
- * @param {ResolverWithOptions} resolver the resolver
1616
- * @param {InputFileSystem} fs the file system
1617
- * @param {BuildCallback} callback callback function
1618
- * @returns {void}
1619
- */
1620
- build(options, compilation, resolver, fs, callback) {
1621
- this._forceBuild = false;
1622
- this._source = null;
1623
- if (this._sourceSizes !== undefined) this._sourceSizes.clear();
1624
- this._sourceTypes = undefined;
1625
- this._ast = null;
1626
- this.error = null;
1627
- this.clearWarningsAndErrors();
1628
- this.clearDependenciesAndBlocks();
1629
- this.buildMeta = {
1630
- exportsType: undefined,
1631
- defaultObject: undefined,
1632
- strictHarmonyModule: undefined,
1633
- async: undefined
1634
- };
1635
- this.buildInfo = {
1636
- cacheable: false,
1637
- parsed: true,
1638
- fileDependencies: undefined,
1639
- contextDependencies: undefined,
1640
- missingDependencies: undefined,
1641
- buildDependencies: undefined,
1642
- valueDependencies: undefined,
1643
- hash: undefined,
1644
- assets: undefined,
1645
- assetsInfo: undefined,
1646
- snapshot: undefined,
1647
- strict: undefined,
1648
- exportsArgument: undefined,
1649
- moduleArgument: undefined,
1650
- topLevelDeclarations: undefined,
1651
- pureFunctions: undefined,
1652
- inlineExports: undefined,
1653
- moduleConcatenationBailout: undefined,
1654
- moduleConcatenationRootBailout: undefined,
1655
- diagnostics: undefined,
1656
- needCreateRequire: undefined,
1657
- usesTopLevelUsingDeclaration: undefined
1658
- };
1659
-
1660
- const startTime = compilation.compiler.fsStartTime || Date.now();
1661
-
1662
- const hooks = NormalModule.getCompilationHooks(compilation);
1663
-
1664
- return this._doBuild(options, compilation, resolver, fs, hooks, (err) => {
1665
- // if we have an error mark module as failed and exit
1666
- if (err) {
1667
- this.markModuleAsErrored(err);
1668
- this._initBuildHash(compilation);
1669
- return callback();
1670
- }
1671
-
1672
- /**
1673
- * @param {Error} e error
1674
- * @returns {void}
1675
- */
1676
- const handleParseError = (e) => {
1677
- const source = /** @type {Source} */ (this._source).source();
1678
- const loaders = this.loaders.map((item) =>
1679
- contextify(options.context, item.loader, compilation.compiler.root)
1680
- );
1681
- const error = new (getModuleParseError())(
1682
- source,
1683
- e,
1684
- loaders,
1685
- this.type
1686
- );
1687
- this.markModuleAsErrored(error);
1688
- this._initBuildHash(compilation);
1689
- return callback();
1690
- };
1691
-
1692
- const handleParseResult = () => {
1693
- this.dependencies.sort(
1694
- concatComparators(
1695
- Dependency.compareLocations,
1696
- keepOriginalOrder(this.dependencies)
1697
- )
1698
- );
1699
- sortWithSourceOrder(this.dependencies, new WeakMap());
1700
- this._initBuildHash(compilation);
1701
- this._lastSuccessfulBuildMeta =
1702
- /** @type {BuildMeta} */
1703
- (this.buildMeta);
1704
- return handleBuildDone();
1705
- };
1706
-
1707
- const handleBuildDone = () => {
1708
- try {
1709
- hooks.beforeSnapshot.call(this);
1710
- } catch (err) {
1711
- this.markModuleAsErrored(/** @type {Error} */ (err));
1712
- return callback();
1713
- }
1714
-
1715
- const snapshotOptions = compilation.options.snapshot.module;
1716
- const { cacheable } = /** @type {NormalModuleBuildInfo} */ (
1717
- this.buildInfo
1718
- );
1719
- if (!cacheable || !snapshotOptions) {
1720
- return callback();
1721
- }
1722
- // add warning for all non-absolute paths in fileDependencies, etc
1723
- // This makes it easier to find problems with watching and/or caching
1724
- /** @type {undefined | Set<string>} */
1725
- let nonAbsoluteDependencies;
1726
- /**
1727
- * @param {FileSystemDependencies} deps deps
1728
- */
1729
- const checkDependencies = (deps) => {
1730
- for (const dep of deps) {
1731
- if (!ABSOLUTE_PATH_REGEXP.test(dep)) {
1732
- if (nonAbsoluteDependencies === undefined) {
1733
- nonAbsoluteDependencies = new Set();
1734
- }
1735
- nonAbsoluteDependencies.add(dep);
1736
- deps.delete(dep);
1737
- try {
1738
- const depWithoutGlob = dep.replace(/[\\/]?\*.*$/, "");
1739
- const absolute = join(
1740
- compilation.fileSystemInfo.fs,
1741
- /** @type {string} */
1742
- (this.context),
1743
- depWithoutGlob
1744
- );
1745
- if (absolute !== dep && ABSOLUTE_PATH_REGEXP.test(absolute)) {
1746
- (depWithoutGlob !== dep
1747
- ? /** @type {NonNullable<KnownNormalModuleBuildInfo["contextDependencies"]>} */
1748
- (
1749
- /** @type {NormalModuleBuildInfo} */
1750
- (this.buildInfo).contextDependencies
1751
- )
1752
- : deps
1753
- ).add(absolute);
1754
- }
1755
- } catch (_err) {
1756
- // ignore
1757
- }
1758
- }
1759
- }
1760
- };
1761
- const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
1762
- const fileDependencies =
1763
- /** @type {NonNullable<KnownNormalModuleBuildInfo["fileDependencies"]>} */
1764
- (buildInfo.fileDependencies);
1765
- const contextDependencies =
1766
- /** @type {NonNullable<KnownNormalModuleBuildInfo["contextDependencies"]>} */
1767
- (buildInfo.contextDependencies);
1768
- const missingDependencies =
1769
- /** @type {NonNullable<KnownNormalModuleBuildInfo["missingDependencies"]>} */
1770
- (buildInfo.missingDependencies);
1771
- checkDependencies(fileDependencies);
1772
- checkDependencies(missingDependencies);
1773
- checkDependencies(contextDependencies);
1774
- if (nonAbsoluteDependencies !== undefined) {
1775
- const InvalidDependenciesModuleWarning =
1776
- getInvalidDependenciesModuleWarning();
1777
- this.addWarning(
1778
- new InvalidDependenciesModuleWarning(this, nonAbsoluteDependencies)
1779
- );
1780
- }
1781
- // convert file/context/missingDependencies into filesystem snapshot
1782
- compilation.fileSystemInfo.createSnapshot(
1783
- startTime,
1784
- fileDependencies,
1785
- contextDependencies,
1786
- missingDependencies,
1787
- snapshotOptions,
1788
- (err, snapshot) => {
1789
- if (err) {
1790
- this.markModuleAsErrored(err);
1791
- return;
1792
- }
1793
- buildInfo.fileDependencies = undefined;
1794
- buildInfo.contextDependencies = undefined;
1795
- buildInfo.missingDependencies = undefined;
1796
- buildInfo.snapshot = snapshot;
1797
- return callback();
1798
- }
1799
- );
1800
- };
1801
-
1802
- try {
1803
- hooks.beforeParse.call(this);
1804
- } catch (err) {
1805
- this.markModuleAsErrored(/** @type {Error} */ (err));
1806
- this._initBuildHash(compilation);
1807
- return callback();
1808
- }
1809
-
1810
- // check if this module should !not! be parsed.
1811
- // if so, exit here;
1812
- const noParseRule = options.module && options.module.noParse;
1813
- if (this.shouldPreventParsing(noParseRule, this.request)) {
1814
- // We assume that we need module and exports
1815
- /** @type {NormalModuleBuildInfo} */
1816
- (this.buildInfo).parsed = false;
1817
- this._initBuildHash(compilation);
1818
- return handleBuildDone();
1819
- }
1820
-
1821
- try {
1822
- const source = /** @type {Source} */ (this._source).source();
1823
- /** @type {Parser} */
1824
- (this.parser).parse(this._ast || source, {
1825
- source,
1826
- current: this,
1827
- module: this,
1828
- compilation,
1829
- options,
1830
- harmonyNamedExports: undefined,
1831
- harmonyStarExports: undefined,
1832
- lastHarmonyImportOrder: undefined,
1833
- localModules: undefined
1834
- });
1835
- } catch (parseErr) {
1836
- handleParseError(/** @type {Error} */ (parseErr));
1837
- return;
1838
- }
1839
- handleParseResult();
1840
- });
1841
- }
1842
-
1843
- /**
1844
- * Returns the reason this module cannot be concatenated, when one exists.
1845
- * @param {ConcatenationBailoutReasonContext} context context
1846
- * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
1847
- */
1848
- getConcatenationBailoutReason(context) {
1849
- return /** @type {Generator} */ (
1850
- this.generator
1851
- ).getConcatenationBailoutReason(this, context);
1852
- }
1853
-
1854
- /**
1855
- * Gets side effects connection state.
1856
- * @param {ModuleGraph} moduleGraph the module graph
1857
- * @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
1858
- */
1859
- getSideEffectsConnectionState(moduleGraph) {
1860
- // Each call owns its Tarjan bookkeeping; re-entrant calls (e.g.
1861
- // `ConcatenatedModule.getSideEffectsConnectionState` delegating back
1862
- // through here) can't clobber the outer walk.
1863
- return walkSideEffects(
1864
- this,
1865
- moduleGraph,
1866
- HarmonyImportSideEffectDependency
1867
- );
1868
- }
1869
-
1870
- /**
1871
- * Returns the source types this module can generate.
1872
- * @returns {SourceTypes} types available (do not mutate)
1873
- */
1874
- getSourceTypes() {
1875
- if (this._sourceTypes === undefined) {
1876
- this._sourceTypes = /** @type {Generator} */ (this.generator).getTypes(
1877
- this
1878
- );
1879
- }
1880
- return this._sourceTypes;
1881
- }
1882
-
1883
- /**
1884
- * Freshly recomputed source types when they depend on incoming connections, for chunk-graph cache invalidation; undefined otherwise. #20800
1885
- * @returns {SourceTypes | undefined} source types or undefined
1886
- */
1887
- getReferencedSourceTypes() {
1888
- const generator = /** @type {Generator} */ (this.generator);
1889
- // Bypass the _sourceTypes cache: it may be stale when the module is not rebuilt.
1890
- return generator.getTypesDependOnIncomingConnections()
1891
- ? generator.getTypes(this)
1892
- : undefined;
1893
- }
1894
-
1895
- /**
1896
- * Generates code and runtime requirements for this module.
1897
- * @param {CodeGenerationContext} context context for code generation
1898
- * @returns {CodeGenerationResult} result
1899
- */
1900
- codeGeneration({
1901
- dependencyTemplates,
1902
- runtimeTemplate,
1903
- moduleGraph,
1904
- chunkGraph,
1905
- runtime,
1906
- concatenationScope,
1907
- codeGenerationResults,
1908
- sourceTypes
1909
- }) {
1910
- /** @type {RuntimeRequirements} */
1911
- const runtimeRequirements = new Set();
1912
-
1913
- const { parsed } = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
1914
-
1915
- if (!parsed) {
1916
- runtimeRequirements.add(RuntimeGlobals.module);
1917
- runtimeRequirements.add(RuntimeGlobals.exports);
1918
- runtimeRequirements.add(RuntimeGlobals.thisAsExports);
1919
- }
1920
-
1921
- /** @type {CodeGenerationResult} */
1922
- const resultEntry = {
1923
- sources: new Map(),
1924
- runtimeRequirements,
1925
- data: undefined,
1926
- hash: undefined
1927
- };
1928
-
1929
- const getData = () => {
1930
- if (resultEntry.data === undefined) resultEntry.data = new Map();
1931
- return resultEntry.data;
1932
- };
1933
-
1934
- for (const type of sourceTypes || chunkGraph.getModuleSourceTypes(this)) {
1935
- // TODO webpack@6 make generateError required
1936
- const generator =
1937
- /** @type {Generator & { generateError?: GenerateErrorFn }} */
1938
- (this.generator);
1939
- const source = this.error
1940
- ? generator.generateError
1941
- ? generator.generateError(this.error, this, {
1942
- dependencyTemplates,
1943
- runtimeTemplate,
1944
- moduleGraph,
1945
- chunkGraph,
1946
- runtimeRequirements,
1947
- runtime,
1948
- concatenationScope,
1949
- codeGenerationResults,
1950
- getData,
1951
- type
1952
- })
1953
- : new RawSource(getGenerator().throwBuildErrorCode(this.error))
1954
- : generator.generate(this, {
1955
- dependencyTemplates,
1956
- runtimeTemplate,
1957
- moduleGraph,
1958
- chunkGraph,
1959
- runtimeRequirements,
1960
- runtime,
1961
- concatenationScope,
1962
- codeGenerationResults,
1963
- getData,
1964
- type
1965
- });
1966
-
1967
- if (source) {
1968
- resultEntry.sources.set(type, new CachedSource(source));
1969
- }
1970
- }
1971
-
1972
- return resultEntry;
1973
- }
1974
-
1975
- /**
1976
- * Gets the original source.
1977
- * @returns {Source | null} the original source for the module before webpack transformation
1978
- */
1979
- originalSource() {
1980
- return this._source;
1981
- }
1982
-
1983
- /**
1984
- * Invalidates the cached state associated with this value.
1985
- * @returns {void}
1986
- */
1987
- invalidateBuild() {
1988
- this._forceBuild = true;
1989
- }
1990
-
1991
- /**
1992
- * Checks whether the module needs to be rebuilt for the current build state.
1993
- * @param {NeedBuildContext} context context info
1994
- * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
1995
- * @returns {void}
1996
- */
1997
- needBuild(context, callback) {
1998
- const { fileSystemInfo, compilation, valueCacheVersions } = context;
1999
- // build if enforced
2000
- if (this._forceBuild) return callback(null, true);
2001
-
2002
- // always try to build in case of an error
2003
- if (this.error) return callback(null, true);
2004
-
2005
- const { cacheable, snapshot, valueDependencies } =
2006
- /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
2007
-
2008
- // always build when module is not cacheable
2009
- if (!cacheable) return callback(null, true);
2010
-
2011
- // build when there is no snapshot to check
2012
- if (!snapshot) return callback(null, true);
2013
-
2014
- // build when valueDependencies have changed
2015
- if (valueDependencies) {
2016
- if (!valueCacheVersions) return callback(null, true);
2017
- for (const [key, value] of valueDependencies) {
2018
- if (value === undefined) return callback(null, true);
2019
- const current = valueCacheVersions.get(key);
2020
- if (
2021
- value !== current &&
2022
- (typeof value === "string" ||
2023
- typeof current === "string" ||
2024
- current === undefined ||
2025
- !isSubset(value, current))
2026
- ) {
2027
- return callback(null, true);
2028
- }
2029
- }
2030
- }
2031
-
2032
- // check snapshot for validity
2033
- fileSystemInfo.checkSnapshotValid(snapshot, (err, valid) => {
2034
- if (err) return callback(err);
2035
- if (!valid) return callback(null, true);
2036
- const hooks = NormalModule.getCompilationHooks(compilation);
2037
- hooks.needBuild.callAsync(this, context, (err, needBuild) => {
2038
- if (err) {
2039
- return callback(
2040
- HookWebpackError.makeWebpackError(
2041
- err,
2042
- "NormalModule.getCompilationHooks().needBuild"
2043
- )
2044
- );
2045
- }
2046
- callback(null, Boolean(needBuild));
2047
- });
2048
- });
2049
- }
2050
-
2051
- /**
2052
- * Returns the estimated size for the requested source type.
2053
- * @param {string=} type the source type for which the size should be estimated
2054
- * @returns {number} the estimated size of the module (must be non-zero)
2055
- */
2056
- size(type) {
2057
- const cachedSize =
2058
- this._sourceSizes === undefined ? undefined : this._sourceSizes.get(type);
2059
- if (cachedSize !== undefined) {
2060
- return cachedSize;
2061
- }
2062
- const size = Math.max(
2063
- 1,
2064
- /** @type {Generator} */ (this.generator).getSize(this, type)
2065
- );
2066
- if (this._sourceSizes === undefined) {
2067
- this._sourceSizes = new Map();
2068
- }
2069
- this._sourceSizes.set(type, size);
2070
- return size;
2071
- }
2072
-
2073
- /**
2074
- * Adds the provided file dependencies to the module.
2075
- * @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
2076
- * @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
2077
- * @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
2078
- * @param {FileSystemDependencies} buildDependencies set where build dependencies are added to
2079
- */
2080
- addCacheDependencies(
2081
- fileDependencies,
2082
- contextDependencies,
2083
- missingDependencies,
2084
- buildDependencies
2085
- ) {
2086
- const { snapshot, buildDependencies: buildDeps } =
2087
- /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
2088
- if (snapshot) {
2089
- fileDependencies.addAll(snapshot.getFileIterable());
2090
- contextDependencies.addAll(snapshot.getContextIterable());
2091
- missingDependencies.addAll(snapshot.getMissingIterable());
2092
- } else {
2093
- const {
2094
- fileDependencies: fileDeps,
2095
- contextDependencies: contextDeps,
2096
- missingDependencies: missingDeps
2097
- } = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
2098
- if (fileDeps !== undefined) fileDependencies.addAll(fileDeps);
2099
- if (contextDeps !== undefined) contextDependencies.addAll(contextDeps);
2100
- if (missingDeps !== undefined) missingDependencies.addAll(missingDeps);
2101
- }
2102
- if (buildDeps !== undefined) {
2103
- buildDependencies.addAll(buildDeps);
2104
- }
2105
- }
2106
-
2107
- /**
2108
- * Updates the hash with the data contributed by this instance.
2109
- * @param {Hash} hash the hash used to track dependencies
2110
- * @param {UpdateHashContext} context context
2111
- * @returns {void}
2112
- */
2113
- updateHash(hash, context) {
2114
- const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
2115
- hash.update(
2116
- /** @type {string} */
2117
- (buildInfo.hash)
2118
- );
2119
- // Clear cached source types and re-compute so that changes in incoming
2120
- // connections (e.g. asset module newly referenced from JS via lazy
2121
- // compilation) are reflected in the hash and trigger code generation
2122
- // cache invalidation.
2123
- // https://github.com/webpack/webpack/issues/20800
2124
- this._sourceTypes = undefined;
2125
- for (const type of this.getSourceTypes()) {
2126
- hash.update(type);
2127
- }
2128
- /** @type {Generator} */
2129
- (this.generator).updateHash(hash, {
2130
- module: this,
2131
- ...context
2132
- });
2133
- super.updateHash(hash, context);
2134
- }
2135
-
2136
- /**
2137
- * Serializes this instance into the provided serializer context.
2138
- * @param {ObjectSerializerContext} context context
2139
- */
2140
- serialize(context) {
2141
- const { write } = context;
2142
- // deserialize
2143
- write(this._source);
2144
- write(this.error);
2145
- write(this._lastSuccessfulBuildMeta);
2146
- write(this._forceBuild);
2147
- write(this.hot);
2148
- super.serialize(context);
2149
- }
2150
-
2151
- /**
2152
- * @param {ObjectDeserializerContext} context context
2153
- * @returns {NormalModule} module
2154
- */
2155
- static deserialize(context) {
2156
- // `new this` so subclasses without extra constructor options inherit this method
2157
- const obj = new this({
2158
- // will be deserialized by Module
2159
- layer: /** @type {EXPECTED_ANY} */ (null),
2160
- type: "",
2161
- // will be filled by updateCacheModule
2162
- resource: "",
2163
- context: "",
2164
- request: /** @type {EXPECTED_ANY} */ (null),
2165
- userRequest: /** @type {EXPECTED_ANY} */ (null),
2166
- rawRequest: /** @type {EXPECTED_ANY} */ (null),
2167
- loaders: /** @type {EXPECTED_ANY} */ (null),
2168
- matchResource: /** @type {EXPECTED_ANY} */ (null),
2169
- parser: /** @type {EXPECTED_ANY} */ (null),
2170
- parserOptions: /** @type {EXPECTED_ANY} */ (null),
2171
- generator: /** @type {EXPECTED_ANY} */ (null),
2172
- generatorOptions: /** @type {EXPECTED_ANY} */ (null),
2173
- resolveOptions: undefined,
2174
- extractSourceMap: /** @type {EXPECTED_ANY} */ (null)
2175
- });
2176
- obj.deserialize(context);
2177
- return obj;
2178
- }
2179
-
2180
- /**
2181
- * Restores this instance from the provided deserializer context.
2182
- * @param {ObjectDeserializerContext} context context
2183
- */
2184
- deserialize(context) {
2185
- const { read } = context;
2186
- this._source = read();
2187
- this.error = read();
2188
- this._lastSuccessfulBuildMeta = read();
2189
- this._forceBuild = read();
2190
- this.hot = read();
2191
- super.deserialize(context);
2192
- }
2193
- }
2194
-
2195
- makeSerializable(NormalModule, "webpack/lib/NormalModule");
2196
-
2197
- module.exports = NormalModule;
8
+ // TODO in the next major release: remove
9
+ // Some old plugins use `require("webpack/lib/NormalModule")`, in the next major release developer should migrate to `compiler.webpack.NormalModule`
10
+ module.exports = require("./module/NormalModule");