webpack 5.106.1 → 5.107.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 (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -6,7 +6,6 @@
6
6
  "use strict";
7
7
 
8
8
  const querystring = require("querystring");
9
- const parseJson = require("json-parse-even-better-errors");
10
9
  const { getContext, runLoaders } = require("loader-runner");
11
10
  const {
12
11
  AsyncSeriesBailHook,
@@ -21,18 +20,17 @@ const {
21
20
  SourceMapSource
22
21
  } = require("webpack-sources");
23
22
  const Compilation = require("./Compilation");
24
- const HookWebpackError = require("./HookWebpackError");
25
23
  const Module = require("./Module");
26
- const ModuleBuildError = require("./ModuleBuildError");
27
- const ModuleError = require("./ModuleError");
28
24
  const ModuleGraphConnection = require("./ModuleGraphConnection");
29
- const ModuleParseError = require("./ModuleParseError");
30
25
  const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
31
- const ModuleWarning = require("./ModuleWarning");
32
26
  const RuntimeGlobals = require("./RuntimeGlobals");
33
- const UnhandledSchemeError = require("./UnhandledSchemeError");
34
- const WebpackError = require("./WebpackError");
35
- const formatLocation = require("./formatLocation");
27
+ const HookWebpackError = require("./errors/HookWebpackError");
28
+ const ModuleBuildError = require("./errors/ModuleBuildError");
29
+ const ModuleError = require("./errors/ModuleError");
30
+ const ModuleParseError = require("./errors/ModuleParseError");
31
+ const ModuleWarning = require("./errors/ModuleWarning");
32
+ const NonErrorEmittedError = require("./errors/NonErrorEmittedError");
33
+ const UnhandledSchemeError = require("./errors/UnhandledSchemeError");
36
34
  const LazySet = require("./util/LazySet");
37
35
  const { isSubset } = require("./util/SetHelpers");
38
36
  const { getScheme } = require("./util/URLAbsoluteSpecifier");
@@ -45,6 +43,7 @@ const {
45
43
  } = require("./util/comparators");
46
44
  const createHash = require("./util/createHash");
47
45
  const { createFakeHook } = require("./util/deprecation");
46
+ const formatLocation = require("./util/formatLocation");
48
47
  const { join } = require("./util/fs");
49
48
  const {
50
49
  absolutify,
@@ -53,6 +52,7 @@ const {
53
52
  } = require("./util/identifier");
54
53
  const makeSerializable = require("./util/makeSerializable");
55
54
  const memoize = require("./util/memoize");
55
+ const parseJson = require("./util/parseJson");
56
56
 
57
57
  /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
58
58
  /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
@@ -119,7 +119,7 @@ const memoize = require("./util/memoize");
119
119
  /** @typedef {(content: string) => boolean} NoParseFn */
120
120
 
121
121
  const getInvalidDependenciesModuleWarning = memoize(() =>
122
- require("./InvalidDependenciesModuleWarning")
122
+ require("./errors/InvalidDependenciesModuleWarning")
123
123
  );
124
124
 
125
125
  const getExtractSourceMap = memoize(() => require("./util/extractSourceMap"));
@@ -207,24 +207,6 @@ const asBuffer = (input) => {
207
207
  return input;
208
208
  };
209
209
 
210
- class NonErrorEmittedError extends WebpackError {
211
- /**
212
- * @param {EXPECTED_ANY} error value which is not an instance of Error
213
- */
214
- constructor(error) {
215
- super();
216
-
217
- this.name = "NonErrorEmittedError";
218
- this.message = `(Emitted value instead of an instance of Error) ${error}`;
219
- }
220
- }
221
-
222
- makeSerializable(
223
- NonErrorEmittedError,
224
- "webpack/lib/NormalModule",
225
- "NonErrorEmittedError"
226
- );
227
-
228
210
  /** @typedef {[string | Buffer, string | RawSourceMap | undefined, PreparsedAst | undefined]} Result */
229
211
 
230
212
  /** @typedef {LoaderContext<EXPECTED_ANY>} AnyLoaderContext */
@@ -394,7 +376,7 @@ class NormalModule extends Module {
394
376
  this.extractSourceMap = extractSourceMap;
395
377
 
396
378
  // Info from Build
397
- /** @type {WebpackError | null} */
379
+ /** @type {Error | null} */
398
380
  this.error = null;
399
381
  /**
400
382
  * @private
@@ -440,6 +422,7 @@ class NormalModule extends Module {
440
422
  }
441
423
 
442
424
  /**
425
+ * Returns the unique identifier used to reference this module.
443
426
  * @returns {string} a unique identifier of the module
444
427
  */
445
428
  identifier() {
@@ -453,6 +436,7 @@ class NormalModule extends Module {
453
436
  }
454
437
 
455
438
  /**
439
+ * Returns a human-readable identifier for this module.
456
440
  * @param {RequestShortener} requestShortener the request shortener
457
441
  * @returns {string} a user readable identifier of the module
458
442
  */
@@ -468,6 +452,7 @@ class NormalModule extends Module {
468
452
  }
469
453
 
470
454
  /**
455
+ * Gets the library identifier.
471
456
  * @param {LibIdentOptions} options options
472
457
  * @returns {LibIdent | null} an identifier for library inclusion
473
458
  */
@@ -482,6 +467,7 @@ class NormalModule extends Module {
482
467
  }
483
468
 
484
469
  /**
470
+ * Returns the path used when matching this module against rule conditions.
485
471
  * @returns {NameForCondition | null} absolute path which should be used for condition matching (usually the resource path)
486
472
  */
487
473
  nameForCondition() {
@@ -722,7 +708,9 @@ class NormalModule extends Module {
722
708
  if (typeof options === "string") {
723
709
  if (options.startsWith("{") && options.endsWith("}")) {
724
710
  try {
725
- options = parseJson(options);
711
+ options =
712
+ /** @type {LoaderItem["options"]} */
713
+ (parseJson(options));
726
714
  } catch (err) {
727
715
  throw new Error(
728
716
  `Cannot parse string options: ${/** @type {Error} */ (err).message}`,
@@ -1170,7 +1158,7 @@ class NormalModule extends Module {
1170
1158
  }
1171
1159
 
1172
1160
  /**
1173
- * @param {WebpackError} error the error
1161
+ * @param {Error} error the error
1174
1162
  * @returns {void}
1175
1163
  */
1176
1164
  markModuleAsErrored(error) {
@@ -1245,6 +1233,7 @@ class NormalModule extends Module {
1245
1233
  }
1246
1234
 
1247
1235
  /**
1236
+ * Builds the module using the provided compilation context.
1248
1237
  * @param {WebpackOptions} options webpack options
1249
1238
  * @param {Compilation} compilation the compilation
1250
1239
  * @param {ResolverWithOptions} resolver the resolver
@@ -1321,7 +1310,7 @@ class NormalModule extends Module {
1321
1310
  try {
1322
1311
  hooks.beforeSnapshot.call(this);
1323
1312
  } catch (err) {
1324
- this.markModuleAsErrored(/** @type {WebpackError} */ (err));
1313
+ this.markModuleAsErrored(/** @type {Error} */ (err));
1325
1314
  return callback();
1326
1315
  }
1327
1316
 
@@ -1413,7 +1402,7 @@ class NormalModule extends Module {
1413
1402
  try {
1414
1403
  hooks.beforeParse.call(this);
1415
1404
  } catch (err) {
1416
- this.markModuleAsErrored(/** @type {WebpackError} */ (err));
1405
+ this.markModuleAsErrored(/** @type {Error} */ (err));
1417
1406
  this._initBuildHash(compilation);
1418
1407
  return callback();
1419
1408
  }
@@ -1448,6 +1437,7 @@ class NormalModule extends Module {
1448
1437
  }
1449
1438
 
1450
1439
  /**
1440
+ * Returns the reason this module cannot be concatenated, when one exists.
1451
1441
  * @param {ConcatenationBailoutReasonContext} context context
1452
1442
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
1453
1443
  */
@@ -1458,6 +1448,7 @@ class NormalModule extends Module {
1458
1448
  }
1459
1449
 
1460
1450
  /**
1451
+ * Gets side effects connection state.
1461
1452
  * @param {ModuleGraph} moduleGraph the module graph
1462
1453
  * @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
1463
1454
  */
@@ -1506,6 +1497,7 @@ class NormalModule extends Module {
1506
1497
  }
1507
1498
 
1508
1499
  /**
1500
+ * Returns the source types this module can generate.
1509
1501
  * @returns {SourceTypes} types available (do not mutate)
1510
1502
  */
1511
1503
  getSourceTypes() {
@@ -1518,6 +1510,7 @@ class NormalModule extends Module {
1518
1510
  }
1519
1511
 
1520
1512
  /**
1513
+ * Generates code and runtime requirements for this module.
1521
1514
  * @param {CodeGenerationContext} context context for code generation
1522
1515
  * @returns {CodeGenerationResult} result
1523
1516
  */
@@ -1596,6 +1589,7 @@ class NormalModule extends Module {
1596
1589
  }
1597
1590
 
1598
1591
  /**
1592
+ * Gets the original source.
1599
1593
  * @returns {Source | null} the original source for the module before webpack transformation
1600
1594
  */
1601
1595
  originalSource() {
@@ -1603,6 +1597,7 @@ class NormalModule extends Module {
1603
1597
  }
1604
1598
 
1605
1599
  /**
1600
+ * Invalidates the cached state associated with this value.
1606
1601
  * @returns {void}
1607
1602
  */
1608
1603
  invalidateBuild() {
@@ -1610,6 +1605,7 @@ class NormalModule extends Module {
1610
1605
  }
1611
1606
 
1612
1607
  /**
1608
+ * Checks whether the module needs to be rebuilt for the current build state.
1613
1609
  * @param {NeedBuildContext} context context info
1614
1610
  * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
1615
1611
  * @returns {void}
@@ -1669,6 +1665,7 @@ class NormalModule extends Module {
1669
1665
  }
1670
1666
 
1671
1667
  /**
1668
+ * Returns the estimated size for the requested source type.
1672
1669
  * @param {string=} type the source type for which the size should be estimated
1673
1670
  * @returns {number} the estimated size of the module (must be non-zero)
1674
1671
  */
@@ -1690,6 +1687,7 @@ class NormalModule extends Module {
1690
1687
  }
1691
1688
 
1692
1689
  /**
1690
+ * Adds the provided file dependencies to the module.
1693
1691
  * @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
1694
1692
  * @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
1695
1693
  * @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
@@ -1723,6 +1721,7 @@ class NormalModule extends Module {
1723
1721
  }
1724
1722
 
1725
1723
  /**
1724
+ * Updates the hash with the data contributed by this instance.
1726
1725
  * @param {Hash} hash the hash used to track dependencies
1727
1726
  * @param {UpdateHashContext} context context
1728
1727
  * @returns {void}
@@ -1733,6 +1732,15 @@ class NormalModule extends Module {
1733
1732
  /** @type {string} */
1734
1733
  (buildInfo.hash)
1735
1734
  );
1735
+ // Clear cached source types and re-compute so that changes in incoming
1736
+ // connections (e.g. asset module newly referenced from JS via lazy
1737
+ // compilation) are reflected in the hash and trigger code generation
1738
+ // cache invalidation.
1739
+ // https://github.com/webpack/webpack/issues/20800
1740
+ this._sourceTypes = undefined;
1741
+ for (const type of this.getSourceTypes()) {
1742
+ hash.update(type);
1743
+ }
1736
1744
  /** @type {Generator} */
1737
1745
  (this.generator).updateHash(hash, {
1738
1746
  module: this,
@@ -1742,6 +1750,7 @@ class NormalModule extends Module {
1742
1750
  }
1743
1751
 
1744
1752
  /**
1753
+ * Serializes this instance into the provided serializer context.
1745
1754
  * @param {ObjectSerializerContext} context context
1746
1755
  */
1747
1756
  serialize(context) {
@@ -1784,6 +1793,7 @@ class NormalModule extends Module {
1784
1793
  }
1785
1794
 
1786
1795
  /**
1796
+ * Restores this instance from the provided deserializer context.
1787
1797
  * @param {ObjectDeserializerContext} context context
1788
1798
  */
1789
1799
  deserialize(context) {
@@ -31,6 +31,7 @@ const { getScheme } = require("./util/URLAbsoluteSpecifier");
31
31
  const { cachedCleverMerge, cachedSetProperty } = require("./util/cleverMerge");
32
32
  const { join } = require("./util/fs");
33
33
  const {
34
+ escapeHashInPathRequest,
34
35
  parseResource,
35
36
  parseResourceWithoutFragment
36
37
  } = require("./util/identifier");
@@ -62,6 +63,7 @@ const {
62
63
  /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
63
64
 
64
65
  /**
66
+ * Defines the callback type used by this module.
65
67
  * @template T
66
68
  * @typedef {import("./Compiler").Callback<T>} Callback
67
69
  */
@@ -70,6 +72,7 @@ const {
70
72
  /** @typedef {Partial<NormalModuleCreateData & { settings: ModuleSettings }>} CreateData */
71
73
 
72
74
  /**
75
+ * Defines the resolve data type used by this module.
73
76
  * @typedef {object} ResolveData
74
77
  * @property {ModuleFactoryCreateData["contextInfo"]} contextInfo
75
78
  * @property {ModuleFactoryCreateData["resolveOptions"]} resolveOptions
@@ -88,6 +91,7 @@ const {
88
91
  */
89
92
 
90
93
  /**
94
+ * Defines the resource data type used by this module.
91
95
  * @typedef {object} ResourceData
92
96
  * @property {string} resource
93
97
  * @property {string=} path
@@ -97,6 +101,7 @@ const {
97
101
  */
98
102
 
99
103
  /**
104
+ * Defines the resource scheme data type used by this module.
100
105
  * @typedef {object} ResourceSchemeData
101
106
  * @property {string=} mimetype mime type of the resource
102
107
  * @property {string=} parameters additional parameters for the resource
@@ -107,6 +112,7 @@ const {
107
112
  /** @typedef {ResourceData & { data: ResourceSchemeData & Partial<ResolveRequest> }} ResourceDataWithData */
108
113
 
109
114
  /**
115
+ * Defines the parsed loader request type used by this module.
110
116
  * @typedef {object} ParsedLoaderRequest
111
117
  * @property {string} loader loader
112
118
  * @property {string | undefined} options options
@@ -127,8 +133,9 @@ const {
127
133
  /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_GLOBAL} CSS_MODULE_TYPE_GLOBAL */
128
134
  /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_MODULE} CSS_MODULE_TYPE_MODULE */
129
135
  /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_AUTO} CSS_MODULE_TYPE_AUTO */
136
+ /** @typedef {import("./ModuleTypeConstants").HTML_MODULE_TYPE} HTML_MODULE_TYPE */
130
137
 
131
- /** @typedef {JAVASCRIPT_MODULE_TYPE_AUTO | JAVASCRIPT_MODULE_TYPE_DYNAMIC | JAVASCRIPT_MODULE_TYPE_ESM | JSON_MODULE_TYPE | ASSET_MODULE_TYPE | ASSET_MODULE_TYPE_INLINE | ASSET_MODULE_TYPE_RESOURCE | ASSET_MODULE_TYPE_SOURCE | WEBASSEMBLY_MODULE_TYPE_ASYNC | WEBASSEMBLY_MODULE_TYPE_SYNC | CSS_MODULE_TYPE | CSS_MODULE_TYPE_GLOBAL | CSS_MODULE_TYPE_MODULE | CSS_MODULE_TYPE_AUTO} KnownNormalModuleTypes */
138
+ /** @typedef {JAVASCRIPT_MODULE_TYPE_AUTO | JAVASCRIPT_MODULE_TYPE_DYNAMIC | JAVASCRIPT_MODULE_TYPE_ESM | JSON_MODULE_TYPE | ASSET_MODULE_TYPE | ASSET_MODULE_TYPE_INLINE | ASSET_MODULE_TYPE_RESOURCE | ASSET_MODULE_TYPE_SOURCE | WEBASSEMBLY_MODULE_TYPE_ASYNC | WEBASSEMBLY_MODULE_TYPE_SYNC | CSS_MODULE_TYPE | CSS_MODULE_TYPE_GLOBAL | CSS_MODULE_TYPE_MODULE | CSS_MODULE_TYPE_AUTO | HTML_MODULE_TYPE} KnownNormalModuleTypes */
132
139
  /** @typedef {KnownNormalModuleTypes | string} NormalModuleTypes */
133
140
 
134
141
  const EMPTY_RESOLVE_OPTIONS = {};
@@ -143,6 +150,7 @@ const MATCH_RESOURCE_REGEX = /^([^!]+)!=!/;
143
150
  const LEADING_DOT_EXTENSION_REGEX = /^[^.]/;
144
151
 
145
152
  /**
153
+ * Returns ident.
146
154
  * @param {LoaderItem} data data
147
155
  * @returns {string} ident
148
156
  */
@@ -163,6 +171,7 @@ const loaderToIdent = (data) => {
163
171
  };
164
172
 
165
173
  /**
174
+ * Stringify loaders and resource.
166
175
  * @param {LoaderItem[]} loaders loaders
167
176
  * @param {string} resource resource
168
177
  * @returns {string} stringified loaders and resource
@@ -176,6 +185,7 @@ const stringifyLoadersAndResource = (loaders, resource) => {
176
185
  };
177
186
 
178
187
  /**
188
+ * Checks whether it needs calls.
179
189
  * @param {number} times times
180
190
  * @param {(err?: null | Error) => void} callback callback
181
191
  * @returns {(err?: null | Error) => void} callback
@@ -191,6 +201,7 @@ const needCalls = (times, callback) => (err) => {
191
201
  };
192
202
 
193
203
  /**
204
+ * Merges global options.
194
205
  * @template T
195
206
  * @template O
196
207
  * @param {T} globalOptions global options
@@ -221,6 +232,7 @@ const mergeGlobalOptions = (globalOptions, type, localOptions) => {
221
232
 
222
233
  // TODO webpack 6 remove
223
234
  /**
235
+ * Deprecation changed hook message.
224
236
  * @template {import("tapable").Hook<EXPECTED_ANY, EXPECTED_ANY>} T
225
237
  * @param {string} name name
226
238
  * @param {T} hook hook
@@ -309,8 +321,14 @@ const ruleSetCompiler = new RuleSetCompiler([
309
321
  /** @typedef {import("../declarations/WebpackOptions").CssGeneratorOptions} CssGeneratorOptions */
310
322
  /** @typedef {import("../declarations/WebpackOptions").CssModuleGeneratorOptions} CssModuleGeneratorOptions */
311
323
 
324
+ /** @typedef {import("./html/HtmlParser")} HtmlParser */
325
+ /** @typedef {import("../declarations/WebpackOptions").EmptyParserOptions} HtmlParserOptions */
326
+ /** @typedef {import("./html/HtmlGenerator")} HtmlGenerator */
327
+ /** @typedef {import("../declarations/WebpackOptions").EmptyGeneratorOptions} HtmlGeneratorOptions */
328
+
312
329
  /* eslint-disable jsdoc/type-formatting */
313
330
  /**
331
+ * Defines the shared type used by this module.
314
332
  * @typedef {[
315
333
  * [JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
316
334
  * [JAVASCRIPT_MODULE_TYPE_DYNAMIC, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
@@ -327,18 +345,21 @@ const ruleSetCompiler = new RuleSetCompiler([
327
345
  * [CSS_MODULE_TYPE_AUTO, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
328
346
  * [CSS_MODULE_TYPE_MODULE, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
329
347
  * [CSS_MODULE_TYPE_GLOBAL, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
348
+ * [HTML_MODULE_TYPE, HtmlParser, HtmlParserOptions, HtmlGenerator, HtmlGeneratorOptions],
330
349
  * [string, Parser, ParserOptions, Generator, GeneratorOptions],
331
350
  * ]} ParsersAndGeneratorsByTypes
332
351
  */
333
352
  /* eslint-enable jsdoc/type-formatting */
334
353
 
335
354
  /**
355
+ * Defines the extract tuple elements type used by this module.
336
356
  * @template {unknown[]} T
337
357
  * @template {number[]} I
338
358
  * @typedef {{ [K in keyof I]: K extends keyof I ? I[K] extends keyof T ? T[I[K]] : never : never }} ExtractTupleElements
339
359
  */
340
360
 
341
361
  /**
362
+ * Represents the normal module factory runtime component.
342
363
  * @template {unknown[]} T
343
364
  * @template {number[]} A
344
365
  * @template [R=void]
@@ -347,6 +368,7 @@ const ruleSetCompiler = new RuleSetCompiler([
347
368
 
348
369
  class NormalModuleFactory extends ModuleFactory {
349
370
  /**
371
+ * Creates an instance of NormalModuleFactory.
350
372
  * @param {object} param params
351
373
  * @param {string=} param.context context
352
374
  * @param {InputFileSystem} param.fs file system
@@ -868,6 +890,7 @@ class NormalModuleFactory extends ModuleFactory {
868
890
  );
869
891
 
870
892
  /**
893
+ * Processes the provided string.
871
894
  * @param {string} context context
872
895
  */
873
896
  const defaultResolve = (context) => {
@@ -895,7 +918,7 @@ class NormalModuleFactory extends ModuleFactory {
895
918
  this.resolveResource(
896
919
  contextInfo,
897
920
  context,
898
- unresolvedResource,
921
+ escapeHashInPathRequest(unresolvedResource),
899
922
  normalResolver,
900
923
  resolveContext,
901
924
  (err, _resolvedResource, resolvedResourceResolveData) => {
@@ -972,6 +995,7 @@ class NormalModuleFactory extends ModuleFactory {
972
995
  }
973
996
 
974
997
  /**
998
+ * Processes the provided data.
975
999
  * @param {ModuleFactoryCreateData} data data object
976
1000
  * @param {ModuleFactoryCallback} callback callback
977
1001
  * @returns {void}
@@ -1080,6 +1104,7 @@ class NormalModuleFactory extends ModuleFactory {
1080
1104
  }
1081
1105
 
1082
1106
  /**
1107
+ * Processes the provided context info.
1083
1108
  * @param {ModuleFactoryCreateDataContextInfo} contextInfo context info
1084
1109
  * @param {string} context context
1085
1110
  * @param {string} unresolvedResource unresolved resource
@@ -1152,6 +1177,7 @@ ${hints.join("\n\n")}`;
1152
1177
  }
1153
1178
 
1154
1179
  /**
1180
+ * Resolve resource error hints.
1155
1181
  * @param {Error} error error
1156
1182
  * @param {ModuleFactoryCreateDataContextInfo} contextInfo context info
1157
1183
  * @param {string} context context
@@ -1277,6 +1303,7 @@ If changing the source code is not an option there is also a resolve options cal
1277
1303
  }
1278
1304
 
1279
1305
  /**
1306
+ * Resolves request array.
1280
1307
  * @param {ModuleFactoryCreateDataContextInfo} contextInfo context info
1281
1308
  * @param {string} context context
1282
1309
  * @param {LoaderItem[]} array array
@@ -1298,6 +1325,7 @@ If changing the source code is not an option there is also a resolve options cal
1298
1325
  asyncLib.map(
1299
1326
  array,
1300
1327
  /**
1328
+ * Handles the callback logic for this hook.
1301
1329
  * @param {LoaderItem} item item
1302
1330
  * @param {Callback<LoaderItem>} callback callback
1303
1331
  */
@@ -1376,6 +1404,7 @@ If changing the source code is not an option there is also a resolve options cal
1376
1404
  }
1377
1405
 
1378
1406
  /**
1407
+ * Returns parser.
1379
1408
  * @param {string} type type
1380
1409
  * @param {ParserOptions} parserOptions parser options
1381
1410
  * @returns {Parser} parser
@@ -1399,6 +1428,7 @@ If changing the source code is not an option there is also a resolve options cal
1399
1428
  }
1400
1429
 
1401
1430
  /**
1431
+ * Creates a parser from the provided type.
1402
1432
  * @param {string} type type
1403
1433
  * @param {ParserOptions} parserOptions parser options
1404
1434
  * @returns {Parser} parser
@@ -1418,6 +1448,7 @@ If changing the source code is not an option there is also a resolve options cal
1418
1448
  }
1419
1449
 
1420
1450
  /**
1451
+ * Returns generator.
1421
1452
  * @param {string} type type of generator
1422
1453
  * @param {GeneratorOptions} generatorOptions generator options
1423
1454
  * @returns {Generator} generator
@@ -1441,6 +1472,7 @@ If changing the source code is not an option there is also a resolve options cal
1441
1472
  }
1442
1473
 
1443
1474
  /**
1475
+ * Creates a generator.
1444
1476
  * @param {string} type type of generator
1445
1477
  * @param {GeneratorOptions} generatorOptions generator options
1446
1478
  * @returns {Generator} generator
@@ -1462,6 +1494,7 @@ If changing the source code is not an option there is also a resolve options cal
1462
1494
  }
1463
1495
 
1464
1496
  /**
1497
+ * Returns the resolver.
1465
1498
  * @param {Parameters<ResolverFactory["get"]>[0]} type type of resolver
1466
1499
  * @param {Parameters<ResolverFactory["get"]>[1]=} resolveOptions options
1467
1500
  * @returns {ReturnType<ResolverFactory["get"]>} the resolver
@@ -27,7 +27,7 @@ class NormalModuleReplacementPlugin {
27
27
  }
28
28
 
29
29
  /**
30
- * Apply the plugin
30
+ * Applies the plugin by registering its hooks on the compiler.
31
31
  * @param {Compiler} compiler the compiler instance
32
32
  * @returns {void}
33
33
  */
@@ -12,6 +12,7 @@ const ModuleFactory = require("./ModuleFactory");
12
12
 
13
13
  class NullFactory extends ModuleFactory {
14
14
  /**
15
+ * Processes the provided data.
15
16
  * @param {ModuleFactoryCreateData} data data object
16
17
  * @param {ModuleFactoryCallback} callback callback
17
18
  * @returns {void}
@@ -11,6 +11,7 @@
11
11
 
12
12
  class OptionsApply {
13
13
  /**
14
+ * Returns options object.
14
15
  * @param {WebpackOptions} options options object
15
16
  * @param {Compiler} compiler compiler object
16
17
  * @param {WebpackOptionsInterception=} interception intercepted options
package/lib/Parser.js CHANGED
@@ -12,6 +12,7 @@
12
12
  /** @typedef {Record<string, EXPECTED_ANY>} PreparsedAst */
13
13
 
14
14
  /**
15
+ * Defines the parser state base type used by this module.
15
16
  * @typedef {object} ParserStateBase
16
17
  * @property {string | Buffer} source
17
18
  * @property {NormalModule} current
@@ -25,13 +26,14 @@
25
26
  class Parser {
26
27
  /* istanbul ignore next */
27
28
  /**
29
+ * Parses the provided source and updates the parser state.
28
30
  * @abstract
29
31
  * @param {string | Buffer | PreparsedAst} source the source to parse
30
32
  * @param {ParserState} state the parser state
31
33
  * @returns {ParserState} the parser state
32
34
  */
33
35
  parse(source, state) {
34
- const AbstractMethodError = require("./AbstractMethodError");
36
+ const AbstractMethodError = require("./errors/AbstractMethodError");
35
37
 
36
38
  throw new AbstractMethodError();
37
39
  }
@@ -16,6 +16,7 @@ const PLUGIN_NAME = "PlatformPlugin";
16
16
  */
17
17
  class PlatformPlugin {
18
18
  /**
19
+ * Creates an instance of PlatformPlugin.
19
20
  * @param {Partial<PlatformTargetProperties>} platform target properties
20
21
  */
21
22
  constructor(platform) {
@@ -24,7 +25,7 @@ class PlatformPlugin {
24
25
  }
25
26
 
26
27
  /**
27
- * Apply the plugin
28
+ * Applies the plugin by registering its hooks on the compiler.
28
29
  * @param {Compiler} compiler the compiler instance
29
30
  * @returns {void}
30
31
  */
@@ -13,6 +13,7 @@ const PLUGIN_NAME = "PrefetchPlugin";
13
13
 
14
14
  class PrefetchPlugin {
15
15
  /**
16
+ * Creates an instance of PrefetchPlugin.
16
17
  * @param {string} context context or request if context is not set
17
18
  * @param {string=} request request
18
19
  */
@@ -27,7 +28,7 @@ class PrefetchPlugin {
27
28
  }
28
29
 
29
30
  /**
30
- * Apply the plugin
31
+ * Applies the plugin by registering its hooks on the compiler.
31
32
  * @param {Compiler} compiler the compiler instance
32
33
  * @returns {void}
33
34
  */