@depup/webpack 5.105.4-depup.37

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 (709) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +38 -0
  3. package/bin/webpack.js +196 -0
  4. package/hot/dev-server.js +90 -0
  5. package/hot/emitter-event-target.js +7 -0
  6. package/hot/emitter.js +2 -0
  7. package/hot/lazy-compilation-node.js +66 -0
  8. package/hot/lazy-compilation-universal.js +18 -0
  9. package/hot/lazy-compilation-web.js +93 -0
  10. package/hot/load-http.js +7 -0
  11. package/hot/log-apply-result.js +49 -0
  12. package/hot/log.js +78 -0
  13. package/hot/only-dev-server.js +118 -0
  14. package/hot/poll.js +41 -0
  15. package/hot/signal.js +66 -0
  16. package/lib/APIPlugin.js +392 -0
  17. package/lib/AbstractMethodError.js +56 -0
  18. package/lib/AsyncDependenciesBlock.js +128 -0
  19. package/lib/AsyncDependencyToInitialChunkError.js +34 -0
  20. package/lib/AutomaticPrefetchPlugin.js +66 -0
  21. package/lib/BannerPlugin.js +138 -0
  22. package/lib/Cache.js +168 -0
  23. package/lib/CacheFacade.js +349 -0
  24. package/lib/CaseSensitiveModulesWarning.js +72 -0
  25. package/lib/Chunk.js +899 -0
  26. package/lib/ChunkGraph.js +1968 -0
  27. package/lib/ChunkGroup.js +615 -0
  28. package/lib/ChunkRenderError.js +38 -0
  29. package/lib/ChunkTemplate.js +181 -0
  30. package/lib/CleanPlugin.js +495 -0
  31. package/lib/CodeGenerationError.js +35 -0
  32. package/lib/CodeGenerationResults.js +167 -0
  33. package/lib/CommentCompilationWarning.js +33 -0
  34. package/lib/CompatibilityPlugin.js +240 -0
  35. package/lib/Compilation.js +5876 -0
  36. package/lib/Compiler.js +1413 -0
  37. package/lib/ConcatenationScope.js +181 -0
  38. package/lib/ConcurrentCompilationError.js +18 -0
  39. package/lib/ConditionalInitFragment.js +120 -0
  40. package/lib/ConstPlugin.js +567 -0
  41. package/lib/ContextExclusionPlugin.js +33 -0
  42. package/lib/ContextModule.js +1411 -0
  43. package/lib/ContextModuleFactory.js +514 -0
  44. package/lib/ContextReplacementPlugin.js +227 -0
  45. package/lib/CssModule.js +179 -0
  46. package/lib/DefinePlugin.js +878 -0
  47. package/lib/DelegatedModule.js +279 -0
  48. package/lib/DelegatedModuleFactoryPlugin.js +116 -0
  49. package/lib/DelegatedPlugin.js +49 -0
  50. package/lib/DependenciesBlock.js +120 -0
  51. package/lib/Dependency.js +390 -0
  52. package/lib/DependencyTemplate.js +71 -0
  53. package/lib/DependencyTemplates.js +67 -0
  54. package/lib/DllEntryPlugin.js +76 -0
  55. package/lib/DllModule.js +175 -0
  56. package/lib/DllModuleFactory.js +38 -0
  57. package/lib/DllPlugin.js +73 -0
  58. package/lib/DllReferencePlugin.js +189 -0
  59. package/lib/DotenvPlugin.js +468 -0
  60. package/lib/DynamicEntryPlugin.js +93 -0
  61. package/lib/EntryOptionPlugin.js +98 -0
  62. package/lib/EntryPlugin.js +72 -0
  63. package/lib/Entrypoint.js +120 -0
  64. package/lib/EnvironmentNotSupportAsyncWarning.js +51 -0
  65. package/lib/EnvironmentPlugin.js +74 -0
  66. package/lib/ErrorHelpers.js +100 -0
  67. package/lib/EvalDevToolModulePlugin.js +135 -0
  68. package/lib/EvalSourceMapDevToolPlugin.js +252 -0
  69. package/lib/ExportsInfo.js +1663 -0
  70. package/lib/ExportsInfoApiPlugin.js +87 -0
  71. package/lib/ExternalModule.js +1169 -0
  72. package/lib/ExternalModuleFactoryPlugin.js +370 -0
  73. package/lib/ExternalsPlugin.js +93 -0
  74. package/lib/FalseIIFEUmdWarning.js +20 -0
  75. package/lib/FileSystemInfo.js +4131 -0
  76. package/lib/FlagAllModulesAsUsedPlugin.js +55 -0
  77. package/lib/FlagDependencyExportsPlugin.js +437 -0
  78. package/lib/FlagDependencyUsagePlugin.js +348 -0
  79. package/lib/FlagEntryExportAsUsedPlugin.js +56 -0
  80. package/lib/Generator.js +188 -0
  81. package/lib/GraphHelpers.js +46 -0
  82. package/lib/HarmonyLinkingError.js +17 -0
  83. package/lib/HookWebpackError.js +121 -0
  84. package/lib/HotModuleReplacementPlugin.js +930 -0
  85. package/lib/HotUpdateChunk.js +16 -0
  86. package/lib/IgnoreErrorModuleFactory.js +39 -0
  87. package/lib/IgnorePlugin.js +105 -0
  88. package/lib/IgnoreWarningsPlugin.js +41 -0
  89. package/lib/InitFragment.js +204 -0
  90. package/lib/InvalidDependenciesModuleWarning.js +44 -0
  91. package/lib/JavascriptMetaInfoPlugin.js +78 -0
  92. package/lib/LibManifestPlugin.js +144 -0
  93. package/lib/LibraryTemplatePlugin.js +48 -0
  94. package/lib/LoaderOptionsPlugin.js +81 -0
  95. package/lib/LoaderTargetPlugin.js +39 -0
  96. package/lib/MainTemplate.js +371 -0
  97. package/lib/ManifestPlugin.js +242 -0
  98. package/lib/Module.js +1319 -0
  99. package/lib/ModuleBuildError.js +83 -0
  100. package/lib/ModuleDependencyError.js +44 -0
  101. package/lib/ModuleDependencyWarning.js +49 -0
  102. package/lib/ModuleError.js +69 -0
  103. package/lib/ModuleFactory.js +57 -0
  104. package/lib/ModuleFilenameHelpers.js +388 -0
  105. package/lib/ModuleGraph.js +1024 -0
  106. package/lib/ModuleGraphConnection.js +199 -0
  107. package/lib/ModuleHashingError.js +31 -0
  108. package/lib/ModuleInfoHeaderPlugin.js +318 -0
  109. package/lib/ModuleNotFoundError.js +90 -0
  110. package/lib/ModuleParseError.js +125 -0
  111. package/lib/ModuleProfile.js +108 -0
  112. package/lib/ModuleRestoreError.js +46 -0
  113. package/lib/ModuleSourceTypeConstants.js +179 -0
  114. package/lib/ModuleStoreError.js +45 -0
  115. package/lib/ModuleTemplate.js +173 -0
  116. package/lib/ModuleTypeConstants.js +190 -0
  117. package/lib/ModuleWarning.js +68 -0
  118. package/lib/MultiCompiler.js +678 -0
  119. package/lib/MultiStats.js +213 -0
  120. package/lib/MultiWatching.js +77 -0
  121. package/lib/NoEmitOnErrorsPlugin.js +30 -0
  122. package/lib/NoModeWarning.js +23 -0
  123. package/lib/NodeStuffInWebError.js +35 -0
  124. package/lib/NodeStuffPlugin.js +587 -0
  125. package/lib/NormalModule.js +1798 -0
  126. package/lib/NormalModuleFactory.js +1455 -0
  127. package/lib/NormalModuleReplacementPlugin.js +75 -0
  128. package/lib/NullFactory.js +24 -0
  129. package/lib/OptimizationStages.js +10 -0
  130. package/lib/OptionsApply.js +24 -0
  131. package/lib/Parser.js +40 -0
  132. package/lib/PlatformPlugin.js +41 -0
  133. package/lib/PrefetchPlugin.js +56 -0
  134. package/lib/ProgressPlugin.js +712 -0
  135. package/lib/ProvidePlugin.js +121 -0
  136. package/lib/RawModule.js +180 -0
  137. package/lib/RecordIdsPlugin.js +216 -0
  138. package/lib/RequestShortener.js +36 -0
  139. package/lib/RequireJsStuffPlugin.js +84 -0
  140. package/lib/ResolverFactory.js +156 -0
  141. package/lib/RuntimeGlobals.js +450 -0
  142. package/lib/RuntimeModule.js +242 -0
  143. package/lib/RuntimePlugin.js +547 -0
  144. package/lib/RuntimeTemplate.js +1288 -0
  145. package/lib/SelfModuleFactory.js +33 -0
  146. package/lib/SingleEntryPlugin.js +8 -0
  147. package/lib/SizeFormatHelpers.js +25 -0
  148. package/lib/SourceMapDevToolModuleOptionsPlugin.js +52 -0
  149. package/lib/SourceMapDevToolPlugin.js +646 -0
  150. package/lib/Stats.js +89 -0
  151. package/lib/Template.js +427 -0
  152. package/lib/TemplatedPathPlugin.js +400 -0
  153. package/lib/UnhandledSchemeError.js +34 -0
  154. package/lib/UnsupportedFeatureWarning.js +35 -0
  155. package/lib/UseStrictPlugin.js +81 -0
  156. package/lib/WarnCaseSensitiveModulesPlugin.js +64 -0
  157. package/lib/WarnDeprecatedOptionPlugin.js +60 -0
  158. package/lib/WarnNoModeSetPlugin.js +27 -0
  159. package/lib/WatchIgnorePlugin.js +155 -0
  160. package/lib/Watching.js +531 -0
  161. package/lib/WebpackError.js +81 -0
  162. package/lib/WebpackIsIncludedPlugin.js +93 -0
  163. package/lib/WebpackOptionsApply.js +941 -0
  164. package/lib/WebpackOptionsDefaulter.js +26 -0
  165. package/lib/asset/AssetBytesGenerator.js +172 -0
  166. package/lib/asset/AssetBytesParser.js +37 -0
  167. package/lib/asset/AssetGenerator.js +816 -0
  168. package/lib/asset/AssetModulesPlugin.js +358 -0
  169. package/lib/asset/AssetParser.js +73 -0
  170. package/lib/asset/AssetSourceGenerator.js +171 -0
  171. package/lib/asset/AssetSourceParser.js +37 -0
  172. package/lib/asset/RawDataUrlModule.js +179 -0
  173. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  174. package/lib/async-modules/AwaitDependenciesInitFragment.js +90 -0
  175. package/lib/async-modules/InferAsyncModulesPlugin.js +54 -0
  176. package/lib/buildChunkGraph.js +1392 -0
  177. package/lib/cache/AddBuildDependenciesPlugin.js +32 -0
  178. package/lib/cache/AddManagedPathsPlugin.js +40 -0
  179. package/lib/cache/IdleFileCachePlugin.js +242 -0
  180. package/lib/cache/MemoryCachePlugin.js +57 -0
  181. package/lib/cache/MemoryWithGcCachePlugin.js +142 -0
  182. package/lib/cache/PackFileCacheStrategy.js +1600 -0
  183. package/lib/cache/ResolverCachePlugin.js +450 -0
  184. package/lib/cache/getLazyHashedEtag.js +91 -0
  185. package/lib/cache/mergeEtags.js +71 -0
  186. package/lib/cli.js +859 -0
  187. package/lib/config/browserslistTargetHandler.js +388 -0
  188. package/lib/config/defaults.js +2086 -0
  189. package/lib/config/normalization.js +681 -0
  190. package/lib/config/target.js +389 -0
  191. package/lib/container/ContainerEntryDependency.js +50 -0
  192. package/lib/container/ContainerEntryModule.js +303 -0
  193. package/lib/container/ContainerEntryModuleFactory.js +27 -0
  194. package/lib/container/ContainerExposedDependency.js +62 -0
  195. package/lib/container/ContainerPlugin.js +118 -0
  196. package/lib/container/ContainerReferencePlugin.js +139 -0
  197. package/lib/container/FallbackDependency.js +66 -0
  198. package/lib/container/FallbackItemDependency.js +34 -0
  199. package/lib/container/FallbackModule.js +193 -0
  200. package/lib/container/FallbackModuleFactory.js +27 -0
  201. package/lib/container/HoistContainerReferencesPlugin.js +256 -0
  202. package/lib/container/ModuleFederationPlugin.js +131 -0
  203. package/lib/container/RemoteModule.js +225 -0
  204. package/lib/container/RemoteRuntimeModule.js +144 -0
  205. package/lib/container/RemoteToExternalDependency.js +33 -0
  206. package/lib/container/options.js +105 -0
  207. package/lib/css/CssGenerator.js +587 -0
  208. package/lib/css/CssLoadingRuntimeModule.js +513 -0
  209. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  210. package/lib/css/CssModulesPlugin.js +939 -0
  211. package/lib/css/CssParser.js +2621 -0
  212. package/lib/css/walkCssTokens.js +1740 -0
  213. package/lib/debug/ProfilingPlugin.js +589 -0
  214. package/lib/dependencies/AMDDefineDependency.js +267 -0
  215. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +504 -0
  216. package/lib/dependencies/AMDPlugin.js +243 -0
  217. package/lib/dependencies/AMDRequireArrayDependency.js +124 -0
  218. package/lib/dependencies/AMDRequireContextDependency.js +69 -0
  219. package/lib/dependencies/AMDRequireDependenciesBlock.js +28 -0
  220. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +425 -0
  221. package/lib/dependencies/AMDRequireDependency.js +189 -0
  222. package/lib/dependencies/AMDRequireItemDependency.js +41 -0
  223. package/lib/dependencies/AMDRuntimeModules.js +50 -0
  224. package/lib/dependencies/CachedConstDependency.js +135 -0
  225. package/lib/dependencies/CommonJsDependencyHelpers.js +65 -0
  226. package/lib/dependencies/CommonJsExportRequireDependency.js +416 -0
  227. package/lib/dependencies/CommonJsExportsDependency.js +184 -0
  228. package/lib/dependencies/CommonJsExportsParserPlugin.js +425 -0
  229. package/lib/dependencies/CommonJsFullRequireDependency.js +162 -0
  230. package/lib/dependencies/CommonJsImportsParserPlugin.js +611 -0
  231. package/lib/dependencies/CommonJsPlugin.js +316 -0
  232. package/lib/dependencies/CommonJsRequireContextDependency.js +73 -0
  233. package/lib/dependencies/CommonJsRequireDependency.js +42 -0
  234. package/lib/dependencies/CommonJsSelfReferenceDependency.js +156 -0
  235. package/lib/dependencies/ConstDependency.js +118 -0
  236. package/lib/dependencies/ContextDependency.js +183 -0
  237. package/lib/dependencies/ContextDependencyHelpers.js +277 -0
  238. package/lib/dependencies/ContextDependencyTemplateAsId.js +63 -0
  239. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +62 -0
  240. package/lib/dependencies/ContextElementDependency.js +147 -0
  241. package/lib/dependencies/CreateRequireParserPlugin.js +356 -0
  242. package/lib/dependencies/CreateScriptUrlDependency.js +75 -0
  243. package/lib/dependencies/CriticalDependencyWarning.js +29 -0
  244. package/lib/dependencies/CssIcssExportDependency.js +539 -0
  245. package/lib/dependencies/CssIcssImportDependency.js +183 -0
  246. package/lib/dependencies/CssIcssSymbolDependency.js +131 -0
  247. package/lib/dependencies/CssImportDependency.js +120 -0
  248. package/lib/dependencies/CssUrlDependency.js +189 -0
  249. package/lib/dependencies/DelegatedSourceDependency.js +33 -0
  250. package/lib/dependencies/DllEntryDependency.js +61 -0
  251. package/lib/dependencies/DynamicExports.js +73 -0
  252. package/lib/dependencies/EntryDependency.js +30 -0
  253. package/lib/dependencies/ExportsInfoDependency.js +161 -0
  254. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  255. package/lib/dependencies/ExternalModuleInitFragment.js +137 -0
  256. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +87 -0
  257. package/lib/dependencies/HarmonyAcceptDependency.js +237 -0
  258. package/lib/dependencies/HarmonyAcceptImportDependency.js +37 -0
  259. package/lib/dependencies/HarmonyCompatibilityDependency.js +91 -0
  260. package/lib/dependencies/HarmonyDetectionParserPlugin.js +103 -0
  261. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +165 -0
  262. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +254 -0
  263. package/lib/dependencies/HarmonyExportExpressionDependency.js +211 -0
  264. package/lib/dependencies/HarmonyExportHeaderDependency.js +78 -0
  265. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +1494 -0
  266. package/lib/dependencies/HarmonyExportInitFragment.js +191 -0
  267. package/lib/dependencies/HarmonyExportSpecifierDependency.js +127 -0
  268. package/lib/dependencies/HarmonyExports.js +46 -0
  269. package/lib/dependencies/HarmonyImportDependency.js +459 -0
  270. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +576 -0
  271. package/lib/dependencies/HarmonyImportSideEffectDependency.js +91 -0
  272. package/lib/dependencies/HarmonyImportSpecifierDependency.js +514 -0
  273. package/lib/dependencies/HarmonyModulesPlugin.js +158 -0
  274. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +39 -0
  275. package/lib/dependencies/ImportContextDependency.js +81 -0
  276. package/lib/dependencies/ImportDependency.js +158 -0
  277. package/lib/dependencies/ImportEagerDependency.js +76 -0
  278. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  279. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +312 -0
  280. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  281. package/lib/dependencies/ImportMetaHotAcceptDependency.js +41 -0
  282. package/lib/dependencies/ImportMetaHotDeclineDependency.js +42 -0
  283. package/lib/dependencies/ImportMetaPlugin.js +447 -0
  284. package/lib/dependencies/ImportParserPlugin.js +602 -0
  285. package/lib/dependencies/ImportPhase.js +125 -0
  286. package/lib/dependencies/ImportPlugin.js +98 -0
  287. package/lib/dependencies/ImportWeakDependency.js +74 -0
  288. package/lib/dependencies/JsonExportsDependency.js +137 -0
  289. package/lib/dependencies/LoaderDependency.js +38 -0
  290. package/lib/dependencies/LoaderImportDependency.js +39 -0
  291. package/lib/dependencies/LoaderPlugin.js +294 -0
  292. package/lib/dependencies/LocalModule.js +60 -0
  293. package/lib/dependencies/LocalModuleDependency.js +84 -0
  294. package/lib/dependencies/LocalModulesHelpers.js +68 -0
  295. package/lib/dependencies/ModuleDecoratorDependency.js +136 -0
  296. package/lib/dependencies/ModuleDependency.js +100 -0
  297. package/lib/dependencies/ModuleDependencyTemplateAsId.js +35 -0
  298. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +39 -0
  299. package/lib/dependencies/ModuleHotAcceptDependency.js +41 -0
  300. package/lib/dependencies/ModuleHotDeclineDependency.js +42 -0
  301. package/lib/dependencies/ModuleInitFragmentDependency.js +87 -0
  302. package/lib/dependencies/NullDependency.js +42 -0
  303. package/lib/dependencies/PrefetchDependency.js +27 -0
  304. package/lib/dependencies/ProvidedDependency.js +156 -0
  305. package/lib/dependencies/PureExpressionDependency.js +161 -0
  306. package/lib/dependencies/RequireContextDependency.js +38 -0
  307. package/lib/dependencies/RequireContextDependencyParserPlugin.js +69 -0
  308. package/lib/dependencies/RequireContextPlugin.js +167 -0
  309. package/lib/dependencies/RequireEnsureDependenciesBlock.js +29 -0
  310. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +145 -0
  311. package/lib/dependencies/RequireEnsureDependency.js +115 -0
  312. package/lib/dependencies/RequireEnsureItemDependency.js +36 -0
  313. package/lib/dependencies/RequireEnsurePlugin.js +86 -0
  314. package/lib/dependencies/RequireHeaderDependency.js +70 -0
  315. package/lib/dependencies/RequireIncludeDependency.js +79 -0
  316. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +100 -0
  317. package/lib/dependencies/RequireIncludePlugin.js +63 -0
  318. package/lib/dependencies/RequireResolveContextDependency.js +67 -0
  319. package/lib/dependencies/RequireResolveDependency.js +58 -0
  320. package/lib/dependencies/RequireResolveHeaderDependency.js +81 -0
  321. package/lib/dependencies/RuntimeRequirementsDependency.js +85 -0
  322. package/lib/dependencies/StaticExportsDependency.js +72 -0
  323. package/lib/dependencies/SystemPlugin.js +168 -0
  324. package/lib/dependencies/SystemRuntimeModule.js +35 -0
  325. package/lib/dependencies/URLContextDependency.js +65 -0
  326. package/lib/dependencies/URLDependency.js +165 -0
  327. package/lib/dependencies/URLPlugin.js +67 -0
  328. package/lib/dependencies/UnsupportedDependency.js +82 -0
  329. package/lib/dependencies/WebAssemblyExportImportedDependency.js +93 -0
  330. package/lib/dependencies/WebAssemblyImportDependency.js +108 -0
  331. package/lib/dependencies/WebpackIsIncludedDependency.js +84 -0
  332. package/lib/dependencies/WorkerDependency.js +141 -0
  333. package/lib/dependencies/WorkerPlugin.js +565 -0
  334. package/lib/dependencies/getFunctionExpression.js +66 -0
  335. package/lib/dependencies/processExportInfo.js +67 -0
  336. package/lib/electron/ElectronTargetPlugin.js +71 -0
  337. package/lib/errors/BuildCycleError.js +30 -0
  338. package/lib/esm/ExportWebpackRequireRuntimeModule.js +30 -0
  339. package/lib/esm/ModuleChunkFormatPlugin.js +273 -0
  340. package/lib/esm/ModuleChunkLoadingPlugin.js +143 -0
  341. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +426 -0
  342. package/lib/formatLocation.js +67 -0
  343. package/lib/hmr/HotModuleReplacement.runtime.js +419 -0
  344. package/lib/hmr/HotModuleReplacementRuntimeModule.js +42 -0
  345. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +471 -0
  346. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  347. package/lib/hmr/LazyCompilationPlugin.js +473 -0
  348. package/lib/hmr/lazyCompilationBackend.js +167 -0
  349. package/lib/ids/ChunkModuleIdRangePlugin.js +94 -0
  350. package/lib/ids/DeterministicChunkIdsPlugin.js +73 -0
  351. package/lib/ids/DeterministicModuleIdsPlugin.js +98 -0
  352. package/lib/ids/HashedModuleIdsPlugin.js +85 -0
  353. package/lib/ids/IdHelpers.js +492 -0
  354. package/lib/ids/NamedChunkIdsPlugin.js +92 -0
  355. package/lib/ids/NamedModuleIdsPlugin.js +68 -0
  356. package/lib/ids/NaturalChunkIdsPlugin.js +35 -0
  357. package/lib/ids/NaturalModuleIdsPlugin.js +40 -0
  358. package/lib/ids/OccurrenceChunkIdsPlugin.js +86 -0
  359. package/lib/ids/OccurrenceModuleIdsPlugin.js +168 -0
  360. package/lib/ids/SyncModuleIdsPlugin.js +161 -0
  361. package/lib/index.js +681 -0
  362. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +153 -0
  363. package/lib/javascript/BasicEvaluatedExpression.js +603 -0
  364. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  365. package/lib/javascript/ChunkHelpers.js +45 -0
  366. package/lib/javascript/CommonJsChunkFormatPlugin.js +148 -0
  367. package/lib/javascript/EnableChunkLoadingPlugin.js +127 -0
  368. package/lib/javascript/JavascriptGenerator.js +277 -0
  369. package/lib/javascript/JavascriptModulesPlugin.js +1905 -0
  370. package/lib/javascript/JavascriptParser.js +5476 -0
  371. package/lib/javascript/JavascriptParserHelpers.js +129 -0
  372. package/lib/javascript/StartupHelpers.js +178 -0
  373. package/lib/json/JsonData.js +74 -0
  374. package/lib/json/JsonGenerator.js +234 -0
  375. package/lib/json/JsonModulesPlugin.js +66 -0
  376. package/lib/json/JsonParser.js +93 -0
  377. package/lib/library/AbstractLibraryPlugin.js +339 -0
  378. package/lib/library/AmdLibraryPlugin.js +181 -0
  379. package/lib/library/AssignLibraryPlugin.js +445 -0
  380. package/lib/library/EnableLibraryPlugin.js +306 -0
  381. package/lib/library/ExportPropertyLibraryPlugin.js +116 -0
  382. package/lib/library/JsonpLibraryPlugin.js +92 -0
  383. package/lib/library/ModuleLibraryPlugin.js +438 -0
  384. package/lib/library/SystemLibraryPlugin.js +256 -0
  385. package/lib/library/UmdLibraryPlugin.js +355 -0
  386. package/lib/logging/Logger.js +223 -0
  387. package/lib/logging/createConsoleLogger.js +217 -0
  388. package/lib/logging/runtime.js +45 -0
  389. package/lib/logging/truncateArgs.js +83 -0
  390. package/lib/node/CommonJsChunkLoadingPlugin.js +120 -0
  391. package/lib/node/NodeEnvironmentPlugin.js +73 -0
  392. package/lib/node/NodeSourcePlugin.js +19 -0
  393. package/lib/node/NodeTargetPlugin.js +102 -0
  394. package/lib/node/NodeTemplatePlugin.js +42 -0
  395. package/lib/node/NodeWatchFileSystem.js +198 -0
  396. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +286 -0
  397. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +123 -0
  398. package/lib/node/ReadFileCompileWasmPlugin.js +127 -0
  399. package/lib/node/RequireChunkLoadingRuntimeModule.js +239 -0
  400. package/lib/node/nodeConsole.js +185 -0
  401. package/lib/optimize/AggressiveMergingPlugin.js +98 -0
  402. package/lib/optimize/AggressiveSplittingPlugin.js +352 -0
  403. package/lib/optimize/ConcatenatedModule.js +2290 -0
  404. package/lib/optimize/EnsureChunkConditionsPlugin.js +88 -0
  405. package/lib/optimize/FlagIncludedChunksPlugin.js +137 -0
  406. package/lib/optimize/InnerGraph.js +368 -0
  407. package/lib/optimize/InnerGraphPlugin.js +455 -0
  408. package/lib/optimize/LimitChunkCountPlugin.js +302 -0
  409. package/lib/optimize/MangleExportsPlugin.js +194 -0
  410. package/lib/optimize/MergeDuplicateChunksPlugin.js +138 -0
  411. package/lib/optimize/MinChunkSizePlugin.js +121 -0
  412. package/lib/optimize/MinMaxSizeWarning.js +35 -0
  413. package/lib/optimize/ModuleConcatenationPlugin.js +971 -0
  414. package/lib/optimize/RealContentHashPlugin.js +488 -0
  415. package/lib/optimize/RemoveEmptyChunksPlugin.js +60 -0
  416. package/lib/optimize/RemoveParentModulesPlugin.js +216 -0
  417. package/lib/optimize/RuntimeChunkPlugin.js +52 -0
  418. package/lib/optimize/SideEffectsFlagPlugin.js +417 -0
  419. package/lib/optimize/SplitChunksPlugin.js +1836 -0
  420. package/lib/performance/AssetsOverSizeLimitWarning.js +37 -0
  421. package/lib/performance/EntrypointsOverSizeLimitWarning.js +40 -0
  422. package/lib/performance/NoAsyncChunksWarning.js +21 -0
  423. package/lib/performance/SizeLimitsPlugin.js +183 -0
  424. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +46 -0
  425. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +95 -0
  426. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +56 -0
  427. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +52 -0
  428. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +46 -0
  429. package/lib/rules/BasicEffectRulePlugin.js +56 -0
  430. package/lib/rules/BasicMatcherRulePlugin.js +68 -0
  431. package/lib/rules/ObjectMatcherRulePlugin.js +79 -0
  432. package/lib/rules/RuleSetCompiler.js +447 -0
  433. package/lib/rules/UseEffectRulePlugin.js +236 -0
  434. package/lib/runtime/AsyncModuleRuntimeModule.js +199 -0
  435. package/lib/runtime/AutoPublicPathRuntimeModule.js +90 -0
  436. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  437. package/lib/runtime/ChunkNameRuntimeModule.js +28 -0
  438. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +40 -0
  439. package/lib/runtime/CompatRuntimeModule.js +83 -0
  440. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +69 -0
  441. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  442. package/lib/runtime/CreateScriptUrlRuntimeModule.js +38 -0
  443. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +42 -0
  444. package/lib/runtime/EnsureChunkRuntimeModule.js +69 -0
  445. package/lib/runtime/GetChunkFilenameRuntimeModule.js +299 -0
  446. package/lib/runtime/GetFullHashRuntimeModule.js +31 -0
  447. package/lib/runtime/GetMainFilenameRuntimeModule.js +49 -0
  448. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +99 -0
  449. package/lib/runtime/GlobalRuntimeModule.js +47 -0
  450. package/lib/runtime/HasOwnPropertyRuntimeModule.js +35 -0
  451. package/lib/runtime/HelperRuntimeModule.js +18 -0
  452. package/lib/runtime/LoadScriptRuntimeModule.js +174 -0
  453. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +232 -0
  454. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +39 -0
  455. package/lib/runtime/NonceRuntimeModule.js +24 -0
  456. package/lib/runtime/OnChunksLoadedRuntimeModule.js +78 -0
  457. package/lib/runtime/PublicPathRuntimeModule.js +38 -0
  458. package/lib/runtime/RelativeUrlRuntimeModule.js +44 -0
  459. package/lib/runtime/RuntimeIdRuntimeModule.js +33 -0
  460. package/lib/runtime/StartupChunkDependenciesPlugin.js +88 -0
  461. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +77 -0
  462. package/lib/runtime/StartupEntrypointRuntimeModule.js +54 -0
  463. package/lib/runtime/SystemContextRuntimeModule.js +23 -0
  464. package/lib/runtime/ToBinaryRuntimeModule.js +72 -0
  465. package/lib/schemes/DataUriPlugin.js +47 -0
  466. package/lib/schemes/FileUriPlugin.js +54 -0
  467. package/lib/schemes/HttpUriPlugin.js +1410 -0
  468. package/lib/schemes/VirtualUrlPlugin.js +248 -0
  469. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  470. package/lib/serialization/ArraySerializer.js +38 -0
  471. package/lib/serialization/BinaryMiddleware.js +1164 -0
  472. package/lib/serialization/DateObjectSerializer.js +28 -0
  473. package/lib/serialization/ErrorObjectSerializer.js +49 -0
  474. package/lib/serialization/FileMiddleware.js +766 -0
  475. package/lib/serialization/MapObjectSerializer.js +48 -0
  476. package/lib/serialization/NullPrototypeObjectSerializer.js +53 -0
  477. package/lib/serialization/ObjectMiddleware.js +877 -0
  478. package/lib/serialization/PlainObjectSerializer.js +119 -0
  479. package/lib/serialization/RegExpObjectSerializer.js +29 -0
  480. package/lib/serialization/Serializer.js +82 -0
  481. package/lib/serialization/SerializerMiddleware.js +226 -0
  482. package/lib/serialization/SetObjectSerializer.js +40 -0
  483. package/lib/serialization/SingleItemMiddleware.js +36 -0
  484. package/lib/serialization/types.js +13 -0
  485. package/lib/sharing/ConsumeSharedFallbackDependency.js +33 -0
  486. package/lib/sharing/ConsumeSharedModule.js +344 -0
  487. package/lib/sharing/ConsumeSharedPlugin.js +380 -0
  488. package/lib/sharing/ConsumeSharedRuntimeModule.js +358 -0
  489. package/lib/sharing/ProvideForSharedDependency.js +33 -0
  490. package/lib/sharing/ProvideSharedDependency.js +80 -0
  491. package/lib/sharing/ProvideSharedModule.js +196 -0
  492. package/lib/sharing/ProvideSharedModuleFactory.js +37 -0
  493. package/lib/sharing/ProvideSharedPlugin.js +248 -0
  494. package/lib/sharing/SharePlugin.js +91 -0
  495. package/lib/sharing/ShareRuntimeModule.js +152 -0
  496. package/lib/sharing/resolveMatchedConfigs.js +106 -0
  497. package/lib/sharing/utils.js +421 -0
  498. package/lib/stats/DefaultStatsFactoryPlugin.js +2791 -0
  499. package/lib/stats/DefaultStatsPresetPlugin.js +417 -0
  500. package/lib/stats/DefaultStatsPrinterPlugin.js +1860 -0
  501. package/lib/stats/StatsFactory.js +406 -0
  502. package/lib/stats/StatsPrinter.js +300 -0
  503. package/lib/url/URLParserPlugin.js +266 -0
  504. package/lib/util/AppendOnlyStackedSet.js +78 -0
  505. package/lib/util/ArrayHelpers.js +46 -0
  506. package/lib/util/ArrayQueue.js +104 -0
  507. package/lib/util/AsyncQueue.js +411 -0
  508. package/lib/util/Hash.js +68 -0
  509. package/lib/util/IterableHelpers.js +46 -0
  510. package/lib/util/LazyBucketSortedSet.js +272 -0
  511. package/lib/util/LazySet.js +236 -0
  512. package/lib/util/MapHelpers.js +34 -0
  513. package/lib/util/ParallelismFactorCalculator.js +70 -0
  514. package/lib/util/Queue.js +52 -0
  515. package/lib/util/Semaphore.js +51 -0
  516. package/lib/util/SetHelpers.js +94 -0
  517. package/lib/util/SortableSet.js +176 -0
  518. package/lib/util/StackedCacheMap.js +140 -0
  519. package/lib/util/StackedMap.js +164 -0
  520. package/lib/util/StringXor.js +103 -0
  521. package/lib/util/TupleQueue.js +70 -0
  522. package/lib/util/TupleSet.js +185 -0
  523. package/lib/util/URLAbsoluteSpecifier.js +86 -0
  524. package/lib/util/WeakTupleMap.js +227 -0
  525. package/lib/util/binarySearchBounds.js +136 -0
  526. package/lib/util/chainedImports.js +99 -0
  527. package/lib/util/cleverMerge.js +676 -0
  528. package/lib/util/comparators.js +645 -0
  529. package/lib/util/compileBooleanMatcher.js +313 -0
  530. package/lib/util/concatenate.js +232 -0
  531. package/lib/util/conventions.js +126 -0
  532. package/lib/util/create-schema-validation.js +41 -0
  533. package/lib/util/createHash.js +91 -0
  534. package/lib/util/dataURL.js +39 -0
  535. package/lib/util/deprecation.js +350 -0
  536. package/lib/util/deterministicGrouping.js +561 -0
  537. package/lib/util/extractSourceMap.js +318 -0
  538. package/lib/util/extractUrlAndGlobal.js +18 -0
  539. package/lib/util/findGraphRoots.js +211 -0
  540. package/lib/util/fs.js +675 -0
  541. package/lib/util/generateDebugId.js +33 -0
  542. package/lib/util/hash/BatchedHash.js +115 -0
  543. package/lib/util/hash/BulkUpdateHash.js +145 -0
  544. package/lib/util/hash/DebugHash.js +75 -0
  545. package/lib/util/hash/hash-digest.js +217 -0
  546. package/lib/util/hash/md4.js +20 -0
  547. package/lib/util/hash/wasm-hash.js +232 -0
  548. package/lib/util/hash/xxhash64.js +20 -0
  549. package/lib/util/identifier.js +471 -0
  550. package/lib/util/internalSerializables.js +222 -0
  551. package/lib/util/magicComment.js +25 -0
  552. package/lib/util/makeSerializable.js +60 -0
  553. package/lib/util/memoize.js +36 -0
  554. package/lib/util/nonNumericOnlyHash.js +22 -0
  555. package/lib/util/numberHash.js +95 -0
  556. package/lib/util/objectToMap.js +15 -0
  557. package/lib/util/processAsyncTree.js +68 -0
  558. package/lib/util/propertyAccess.js +30 -0
  559. package/lib/util/propertyName.js +76 -0
  560. package/lib/util/registerExternalSerializer.js +334 -0
  561. package/lib/util/removeBOM.js +25 -0
  562. package/lib/util/runtime.js +717 -0
  563. package/lib/util/semver.js +604 -0
  564. package/lib/util/serialization.js +153 -0
  565. package/lib/util/smartGrouping.js +221 -0
  566. package/lib/util/source.js +62 -0
  567. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  568. package/lib/validateSchema.js +177 -0
  569. package/lib/wasm/EnableWasmLoadingPlugin.js +146 -0
  570. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +154 -0
  571. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +74 -0
  572. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +212 -0
  573. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +209 -0
  574. package/lib/wasm-async/AsyncWebAssemblyParser.js +80 -0
  575. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +107 -0
  576. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +20 -0
  577. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +422 -0
  578. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +91 -0
  579. package/lib/wasm-sync/WebAssemblyGenerator.js +535 -0
  580. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +111 -0
  581. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +236 -0
  582. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +151 -0
  583. package/lib/wasm-sync/WebAssemblyParser.js +201 -0
  584. package/lib/wasm-sync/WebAssemblyUtils.js +66 -0
  585. package/lib/web/FetchCompileAsyncWasmPlugin.js +70 -0
  586. package/lib/web/FetchCompileWasmPlugin.js +86 -0
  587. package/lib/web/JsonpChunkLoadingPlugin.js +101 -0
  588. package/lib/web/JsonpChunkLoadingRuntimeModule.js +455 -0
  589. package/lib/web/JsonpTemplatePlugin.js +37 -0
  590. package/lib/webpack.js +227 -0
  591. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +110 -0
  592. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +231 -0
  593. package/lib/webworker/WebWorkerTemplatePlugin.js +26 -0
  594. package/module.d.ts +238 -0
  595. package/package.json +258 -0
  596. package/schemas/WebpackOptions.check.d.ts +7 -0
  597. package/schemas/WebpackOptions.check.js +6 -0
  598. package/schemas/WebpackOptions.json +6179 -0
  599. package/schemas/_container.json +155 -0
  600. package/schemas/_sharing.json +118 -0
  601. package/schemas/plugins/BannerPlugin.check.d.ts +7 -0
  602. package/schemas/plugins/BannerPlugin.check.js +6 -0
  603. package/schemas/plugins/BannerPlugin.json +115 -0
  604. package/schemas/plugins/DllPlugin.check.d.ts +7 -0
  605. package/schemas/plugins/DllPlugin.check.js +6 -0
  606. package/schemas/plugins/DllPlugin.json +36 -0
  607. package/schemas/plugins/DllReferencePlugin.check.d.ts +7 -0
  608. package/schemas/plugins/DllReferencePlugin.check.js +6 -0
  609. package/schemas/plugins/DllReferencePlugin.json +206 -0
  610. package/schemas/plugins/IgnorePlugin.check.d.ts +7 -0
  611. package/schemas/plugins/IgnorePlugin.check.js +6 -0
  612. package/schemas/plugins/IgnorePlugin.json +34 -0
  613. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +7 -0
  614. package/schemas/plugins/LoaderOptionsPlugin.check.js +6 -0
  615. package/schemas/plugins/LoaderOptionsPlugin.json +27 -0
  616. package/schemas/plugins/ManifestPlugin.check.d.ts +7 -0
  617. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  618. package/schemas/plugins/ManifestPlugin.json +98 -0
  619. package/schemas/plugins/ProgressPlugin.check.d.ts +7 -0
  620. package/schemas/plugins/ProgressPlugin.check.js +6 -0
  621. package/schemas/plugins/ProgressPlugin.json +65 -0
  622. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +7 -0
  623. package/schemas/plugins/SourceMapDevToolPlugin.check.js +6 -0
  624. package/schemas/plugins/SourceMapDevToolPlugin.json +168 -0
  625. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +7 -0
  626. package/schemas/plugins/WatchIgnorePlugin.check.js +6 -0
  627. package/schemas/plugins/WatchIgnorePlugin.json +25 -0
  628. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +7 -0
  629. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +6 -0
  630. package/schemas/plugins/asset/AssetGeneratorOptions.json +3 -0
  631. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +7 -0
  632. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +6 -0
  633. package/schemas/plugins/asset/AssetInlineGeneratorOptions.json +3 -0
  634. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +7 -0
  635. package/schemas/plugins/asset/AssetParserOptions.check.js +6 -0
  636. package/schemas/plugins/asset/AssetParserOptions.json +3 -0
  637. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +7 -0
  638. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +6 -0
  639. package/schemas/plugins/asset/AssetResourceGeneratorOptions.json +3 -0
  640. package/schemas/plugins/container/ContainerPlugin.check.d.ts +7 -0
  641. package/schemas/plugins/container/ContainerPlugin.check.js +6 -0
  642. package/schemas/plugins/container/ContainerPlugin.json +294 -0
  643. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +7 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +6 -0
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +132 -0
  646. package/schemas/plugins/container/ExternalsType.check.d.ts +7 -0
  647. package/schemas/plugins/container/ExternalsType.check.js +6 -0
  648. package/schemas/plugins/container/ExternalsType.json +3 -0
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +7 -0
  650. package/schemas/plugins/container/ModuleFederationPlugin.check.js +6 -0
  651. package/schemas/plugins/container/ModuleFederationPlugin.json +525 -0
  652. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  653. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  654. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  655. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  656. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  657. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  658. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  659. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  660. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  661. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  662. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  663. package/schemas/plugins/css/CssParserOptions.json +3 -0
  664. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +7 -0
  665. package/schemas/plugins/debug/ProfilingPlugin.check.js +6 -0
  666. package/schemas/plugins/debug/ProfilingPlugin.json +12 -0
  667. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  668. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  669. package/schemas/plugins/ids/HashedModuleIdsPlugin.json +57 -0
  670. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +7 -0
  671. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +6 -0
  672. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.json +11 -0
  673. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +7 -0
  674. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +6 -0
  675. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.json +11 -0
  676. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +7 -0
  677. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  678. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  679. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +7 -0
  680. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  681. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  682. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +7 -0
  683. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +6 -0
  684. package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +23 -0
  685. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +7 -0
  686. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +6 -0
  687. package/schemas/plugins/optimize/LimitChunkCountPlugin.json +21 -0
  688. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +7 -0
  689. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +6 -0
  690. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.json +11 -0
  691. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +7 -0
  692. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +6 -0
  693. package/schemas/plugins/optimize/MinChunkSizePlugin.json +20 -0
  694. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +7 -0
  695. package/schemas/plugins/schemes/HttpUriPlugin.check.js +6 -0
  696. package/schemas/plugins/schemes/HttpUriPlugin.json +74 -0
  697. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  698. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  699. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  700. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +7 -0
  701. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +6 -0
  702. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +120 -0
  703. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +7 -0
  704. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +6 -0
  705. package/schemas/plugins/sharing/ProvideSharedPlugin.json +94 -0
  706. package/schemas/plugins/sharing/SharePlugin.check.d.ts +7 -0
  707. package/schemas/plugins/sharing/SharePlugin.check.js +6 -0
  708. package/schemas/plugins/sharing/SharePlugin.json +133 -0
  709. package/types.d.ts +20217 -0
@@ -0,0 +1,1798 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const querystring = require("querystring");
9
+ const parseJson = require("json-parse-even-better-errors");
10
+ const { getContext, runLoaders } = require("loader-runner");
11
+ const {
12
+ AsyncSeriesBailHook,
13
+ HookMap,
14
+ SyncHook,
15
+ SyncWaterfallHook
16
+ } = require("tapable");
17
+ const {
18
+ CachedSource,
19
+ OriginalSource,
20
+ RawSource,
21
+ SourceMapSource
22
+ } = require("webpack-sources");
23
+ const Compilation = require("./Compilation");
24
+ const HookWebpackError = require("./HookWebpackError");
25
+ const Module = require("./Module");
26
+ const ModuleBuildError = require("./ModuleBuildError");
27
+ const ModuleError = require("./ModuleError");
28
+ const ModuleGraphConnection = require("./ModuleGraphConnection");
29
+ const ModuleParseError = require("./ModuleParseError");
30
+ const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
31
+ const ModuleWarning = require("./ModuleWarning");
32
+ const RuntimeGlobals = require("./RuntimeGlobals");
33
+ const UnhandledSchemeError = require("./UnhandledSchemeError");
34
+ const WebpackError = require("./WebpackError");
35
+ const formatLocation = require("./formatLocation");
36
+ const LazySet = require("./util/LazySet");
37
+ const { isSubset } = require("./util/SetHelpers");
38
+ const { getScheme } = require("./util/URLAbsoluteSpecifier");
39
+ const {
40
+ compareLocations,
41
+ compareSelect,
42
+ concatComparators,
43
+ keepOriginalOrder,
44
+ sortWithSourceOrder
45
+ } = require("./util/comparators");
46
+ const createHash = require("./util/createHash");
47
+ const { createFakeHook } = require("./util/deprecation");
48
+ const { join } = require("./util/fs");
49
+ const {
50
+ absolutify,
51
+ contextify,
52
+ makePathsRelative
53
+ } = require("./util/identifier");
54
+ const makeSerializable = require("./util/makeSerializable");
55
+ const memoize = require("./util/memoize");
56
+
57
+ /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
58
+ /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
59
+ /** @typedef {import("webpack-sources").Source} Source */
60
+ /** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
61
+ /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
62
+ /** @typedef {import("../declarations/WebpackOptions").NoParse} NoParse */
63
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
64
+ /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
65
+ /** @typedef {import("./Generator")} Generator */
66
+ /** @typedef {import("./Generator").GenerateErrorFn} GenerateErrorFn */
67
+ /** @typedef {import("./Module").BuildInfo} BuildInfo */
68
+ /** @typedef {import("./Module").FileSystemDependencies} FileSystemDependencies */
69
+ /** @typedef {import("./Module").BuildMeta} BuildMeta */
70
+ /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
71
+ /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
72
+ /** @typedef {import("./Module").CodeGenerationResultData} CodeGenerationResultData */
73
+ /** @typedef {import("./Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
74
+ /** @typedef {import("./Module").KnownBuildInfo} KnownBuildInfo */
75
+ /** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
76
+ /** @typedef {import("./Module").LibIdent} LibIdent */
77
+ /** @typedef {import("./Module").NameForCondition} NameForCondition */
78
+ /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
79
+ /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
80
+ /** @typedef {import("./Module").BuildCallback} BuildCallback */
81
+ /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
82
+ /** @typedef {import("./Module").Sources} Sources */
83
+ /** @typedef {import("./Module").SourceType} SourceType */
84
+ /** @typedef {import("./Module").SourceTypes} SourceTypes */
85
+ /** @typedef {import("./Module").UnsafeCacheData} UnsafeCacheData */
86
+ /** @typedef {import("./ModuleGraph")} ModuleGraph */
87
+ /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
88
+ /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
89
+ /** @typedef {import("./NormalModuleFactory").NormalModuleTypes} NormalModuleTypes */
90
+ /** @typedef {import("./NormalModuleFactory").ResourceSchemeData} ResourceSchemeData */
91
+ /** @typedef {import("./Parser")} Parser */
92
+ /** @typedef {import("./Parser").PreparsedAst} PreparsedAst */
93
+ /** @typedef {import("./RequestShortener")} RequestShortener */
94
+ /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
95
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
96
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
97
+ /** @typedef {import("./util/Hash")} Hash */
98
+ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
99
+ /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
100
+ /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
101
+ /**
102
+ * @template T
103
+ * @typedef {import("./util/deprecation").FakeHook<T>} FakeHook
104
+ */
105
+
106
+ /** @typedef {{ [k: string]: EXPECTED_ANY }} ParserOptions */
107
+ /** @typedef {{ [k: string]: EXPECTED_ANY }} GeneratorOptions */
108
+
109
+ /**
110
+ * @template T
111
+ * @typedef {import("../declarations/LoaderContext").LoaderContext<T>} LoaderContext
112
+ */
113
+
114
+ /**
115
+ * @template T
116
+ * @typedef {import("../declarations/LoaderContext").NormalModuleLoaderContext<T>} NormalModuleLoaderContext
117
+ */
118
+
119
+ /** @typedef {(content: string) => boolean} NoParseFn */
120
+
121
+ const getInvalidDependenciesModuleWarning = memoize(() =>
122
+ require("./InvalidDependenciesModuleWarning")
123
+ );
124
+
125
+ const getExtractSourceMap = memoize(() => require("./util/extractSourceMap"));
126
+
127
+ const getValidate = memoize(() => require("schema-utils").validate);
128
+
129
+ const ABSOLUTE_PATH_REGEX = /^(?:[a-z]:\\|\\\\|\/)/i;
130
+
131
+ /**
132
+ * @typedef {object} LoaderItem
133
+ * @property {string} loader
134
+ * @property {string | null | undefined | Record<string, EXPECTED_ANY>} options
135
+ * @property {string | null=} ident
136
+ * @property {string | null=} type
137
+ */
138
+
139
+ /**
140
+ * @param {string} context absolute context path
141
+ * @param {string} source a source path
142
+ * @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
143
+ * @returns {string} new source path
144
+ */
145
+ const contextifySourceUrl = (context, source, associatedObjectForCache) => {
146
+ if (source.startsWith("webpack://")) return source;
147
+ return `webpack://${makePathsRelative(
148
+ context,
149
+ source,
150
+ associatedObjectForCache
151
+ )}`;
152
+ };
153
+
154
+ /**
155
+ * @param {string} context absolute context path
156
+ * @param {string | RawSourceMap} sourceMap a source map
157
+ * @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
158
+ * @returns {string | RawSourceMap} new source map
159
+ */
160
+ const contextifySourceMap = (context, sourceMap, associatedObjectForCache) => {
161
+ if (typeof sourceMap === "string" || !Array.isArray(sourceMap.sources)) {
162
+ return sourceMap;
163
+ }
164
+ const { sourceRoot } = sourceMap;
165
+ /** @type {(source: string) => string} */
166
+ const mapper = !sourceRoot
167
+ ? (source) => source
168
+ : sourceRoot.endsWith("/")
169
+ ? (source) =>
170
+ source.startsWith("/")
171
+ ? `${sourceRoot.slice(0, -1)}${source}`
172
+ : `${sourceRoot}${source}`
173
+ : (source) =>
174
+ source.startsWith("/")
175
+ ? `${sourceRoot}${source}`
176
+ : `${sourceRoot}/${source}`;
177
+ const newSources = sourceMap.sources.map((source) =>
178
+ contextifySourceUrl(context, mapper(source), associatedObjectForCache)
179
+ );
180
+ return {
181
+ ...sourceMap,
182
+ file: "x",
183
+ sourceRoot: undefined,
184
+ sources: newSources
185
+ };
186
+ };
187
+
188
+ /**
189
+ * @param {string | Buffer} input the input
190
+ * @returns {string} the converted string
191
+ */
192
+ const asString = (input) => {
193
+ if (Buffer.isBuffer(input)) {
194
+ return input.toString("utf8");
195
+ }
196
+ return input;
197
+ };
198
+
199
+ /**
200
+ * @param {string | Buffer} input the input
201
+ * @returns {Buffer} the converted buffer
202
+ */
203
+ const asBuffer = (input) => {
204
+ if (!Buffer.isBuffer(input)) {
205
+ return Buffer.from(input, "utf8");
206
+ }
207
+ return input;
208
+ };
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
+ /** @typedef {[string | Buffer, string | RawSourceMap | undefined, PreparsedAst | undefined]} Result */
229
+
230
+ /** @typedef {LoaderContext<EXPECTED_ANY>} AnyLoaderContext */
231
+
232
+ /**
233
+ * @typedef {object} NormalModuleCompilationHooks
234
+ * @property {SyncHook<[AnyLoaderContext, NormalModule]>} loader
235
+ * @property {SyncHook<[LoaderItem[], NormalModule, AnyLoaderContext]>} beforeLoaders
236
+ * @property {SyncHook<[NormalModule]>} beforeParse
237
+ * @property {SyncHook<[NormalModule]>} beforeSnapshot
238
+ * @property {HookMap<FakeHook<AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>>>} readResourceForScheme
239
+ * @property {HookMap<AsyncSeriesBailHook<[AnyLoaderContext], string | Buffer | null>>} readResource
240
+ * @property {SyncWaterfallHook<[Result, NormalModule]>} processResult
241
+ * @property {AsyncSeriesBailHook<[NormalModule, NeedBuildContext], boolean>} needBuild
242
+ */
243
+
244
+ /**
245
+ * @typedef {object} NormalModuleCreateData
246
+ * @property {string=} layer an optional layer in which the module is
247
+ * @property {NormalModuleTypes | ""} type module type. When deserializing, this is set to an empty string "".
248
+ * @property {string} request request string
249
+ * @property {string} userRequest request intended by user (without loaders from config)
250
+ * @property {string} rawRequest request without resolving
251
+ * @property {LoaderItem[]} loaders list of loaders
252
+ * @property {string} resource path + query of the real resource
253
+ * @property {(ResourceSchemeData & Partial<ResolveRequest>)=} resourceResolveData resource resolve data
254
+ * @property {string} context context directory for resolving
255
+ * @property {string=} matchResource path + query of the matched resource (virtual)
256
+ * @property {Parser} parser the parser used
257
+ * @property {ParserOptions=} parserOptions the options of the parser used
258
+ * @property {Generator} generator the generator used
259
+ * @property {GeneratorOptions=} generatorOptions the options of the generator used
260
+ * @property {ResolveOptions=} resolveOptions options used for resolving requests from this module
261
+ * @property {boolean} extractSourceMap enable/disable extracting source map
262
+ */
263
+
264
+ /**
265
+ * @typedef {(resourcePath: string, getLoaderContext: (resourcePath: string) => AnyLoaderContext) => Promise<string | Buffer<ArrayBufferLike>>} ReadResource
266
+ */
267
+
268
+ /** @type {WeakMap<Compilation, NormalModuleCompilationHooks>} */
269
+ const compilationHooksMap = new WeakMap();
270
+
271
+ class NormalModule extends Module {
272
+ /**
273
+ * @param {Compilation} compilation the compilation
274
+ * @returns {NormalModuleCompilationHooks} the attached hooks
275
+ */
276
+ static getCompilationHooks(compilation) {
277
+ if (!(compilation instanceof Compilation)) {
278
+ throw new TypeError(
279
+ "The 'compilation' argument must be an instance of Compilation"
280
+ );
281
+ }
282
+ let hooks = compilationHooksMap.get(compilation);
283
+ if (hooks === undefined) {
284
+ hooks = {
285
+ loader: new SyncHook(["loaderContext", "module"]),
286
+ beforeLoaders: new SyncHook(["loaders", "module", "loaderContext"]),
287
+ beforeParse: new SyncHook(["module"]),
288
+ beforeSnapshot: new SyncHook(["module"]),
289
+ // TODO webpack 6 deprecate
290
+ readResourceForScheme: new HookMap((scheme) => {
291
+ const hook =
292
+ /** @type {NormalModuleCompilationHooks} */
293
+ (hooks).readResource.for(scheme);
294
+ return createFakeHook(
295
+ /** @type {AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>} */ ({
296
+ tap: (options, fn) =>
297
+ hook.tap(options, (loaderContext) =>
298
+ fn(
299
+ loaderContext.resource,
300
+ /** @type {NormalModule} */ (loaderContext._module)
301
+ )
302
+ ),
303
+ tapAsync: (options, fn) =>
304
+ hook.tapAsync(options, (loaderContext, callback) =>
305
+ fn(
306
+ loaderContext.resource,
307
+ /** @type {NormalModule} */ (loaderContext._module),
308
+ callback
309
+ )
310
+ ),
311
+ tapPromise: (options, fn) =>
312
+ hook.tapPromise(options, (loaderContext) =>
313
+ fn(
314
+ loaderContext.resource,
315
+ /** @type {NormalModule} */ (loaderContext._module)
316
+ )
317
+ )
318
+ })
319
+ );
320
+ }),
321
+ readResource: new HookMap(
322
+ () => new AsyncSeriesBailHook(["loaderContext"])
323
+ ),
324
+ processResult: new SyncWaterfallHook(["result", "module"]),
325
+ needBuild: new AsyncSeriesBailHook(["module", "context"])
326
+ };
327
+ compilationHooksMap.set(
328
+ compilation,
329
+ /** @type {NormalModuleCompilationHooks} */ (hooks)
330
+ );
331
+ }
332
+ return /** @type {NormalModuleCompilationHooks} */ (hooks);
333
+ }
334
+
335
+ /**
336
+ * @param {NormalModuleCreateData} options options object
337
+ */
338
+ constructor({
339
+ layer,
340
+ type,
341
+ request,
342
+ userRequest,
343
+ rawRequest,
344
+ loaders,
345
+ resource,
346
+ resourceResolveData,
347
+ context,
348
+ matchResource,
349
+ parser,
350
+ parserOptions,
351
+ generator,
352
+ generatorOptions,
353
+ resolveOptions,
354
+ extractSourceMap
355
+ }) {
356
+ super(type, context || getContext(resource), layer);
357
+
358
+ // Info from Factory
359
+ /** @type {NormalModuleCreateData['request']} */
360
+ this.request = request;
361
+ /** @type {NormalModuleCreateData['userRequest']} */
362
+ this.userRequest = userRequest;
363
+ /** @type {NormalModuleCreateData['rawRequest']} */
364
+ this.rawRequest = rawRequest;
365
+ /** @type {boolean} */
366
+ this.binary = /^(?:asset|webassembly)\b/.test(type);
367
+ /** @type {NormalModuleCreateData['parser'] | undefined} */
368
+ this.parser = parser;
369
+ /** @type {NormalModuleCreateData['parserOptions']} */
370
+ this.parserOptions = parserOptions;
371
+ /** @type {NormalModuleCreateData['generator'] | undefined} */
372
+ this.generator = generator;
373
+ /** @type {NormalModuleCreateData['generatorOptions']} */
374
+ this.generatorOptions = generatorOptions;
375
+ /** @type {NormalModuleCreateData['resource']} */
376
+ this.resource = resource;
377
+ /** @type {NormalModuleCreateData['resourceResolveData']} */
378
+ this.resourceResolveData = resourceResolveData;
379
+ /** @type {NormalModuleCreateData['matchResource']} */
380
+ this.matchResource = matchResource;
381
+ /** @type {NormalModuleCreateData['loaders']} */
382
+ this.loaders = loaders;
383
+ if (resolveOptions !== undefined) {
384
+ // already declared in super class
385
+ /** @type {NormalModuleCreateData['resolveOptions']} */
386
+ this.resolveOptions = resolveOptions;
387
+ }
388
+ /** @type {NormalModuleCreateData['extractSourceMap']} */
389
+ this.extractSourceMap = extractSourceMap;
390
+
391
+ // Info from Build
392
+ /** @type {WebpackError | null} */
393
+ this.error = null;
394
+ /**
395
+ * @private
396
+ * @type {Source | null}
397
+ */
398
+ this._source = null;
399
+ /**
400
+ * @private
401
+ * @type {Map<undefined | SourceType, number> | undefined}
402
+ */
403
+ this._sourceSizes = undefined;
404
+ /**
405
+ * @private
406
+ * @type {undefined | SourceTypes}
407
+ */
408
+ this._sourceTypes = undefined;
409
+ // Cache
410
+ /**
411
+ * @private
412
+ * @type {BuildMeta}
413
+ */
414
+ this._lastSuccessfulBuildMeta = {};
415
+ /**
416
+ * @private
417
+ * @type {boolean}
418
+ */
419
+ this._forceBuild = true;
420
+ /**
421
+ * @private
422
+ * @type {boolean}
423
+ */
424
+ this._isEvaluatingSideEffects = false;
425
+ /**
426
+ * @private
427
+ * @type {WeakSet<ModuleGraph> | undefined}
428
+ */
429
+ this._addedSideEffectsBailout = undefined;
430
+ /**
431
+ * @private
432
+ * @type {CodeGenerationResultData}
433
+ */
434
+ this._codeGeneratorData = new Map();
435
+ }
436
+
437
+ /**
438
+ * @returns {string} a unique identifier of the module
439
+ */
440
+ identifier() {
441
+ if (this.layer === null) {
442
+ if (this.type === JAVASCRIPT_MODULE_TYPE_AUTO) {
443
+ return this.request;
444
+ }
445
+ return `${this.type}|${this.request}`;
446
+ }
447
+ return `${this.type}|${this.request}|${this.layer}`;
448
+ }
449
+
450
+ /**
451
+ * @param {RequestShortener} requestShortener the request shortener
452
+ * @returns {string} a user readable identifier of the module
453
+ */
454
+ readableIdentifier(requestShortener) {
455
+ return /** @type {string} */ (requestShortener.shorten(this.userRequest));
456
+ }
457
+
458
+ /**
459
+ * @returns {string | null} return the resource path
460
+ */
461
+ getResource() {
462
+ return this.matchResource || this.resource;
463
+ }
464
+
465
+ /**
466
+ * @param {LibIdentOptions} options options
467
+ * @returns {LibIdent | null} an identifier for library inclusion
468
+ */
469
+ libIdent(options) {
470
+ let ident = contextify(
471
+ options.context,
472
+ this.userRequest,
473
+ options.associatedObjectForCache
474
+ );
475
+ if (this.layer) ident = `(${this.layer})/${ident}`;
476
+ return ident;
477
+ }
478
+
479
+ /**
480
+ * @returns {NameForCondition | null} absolute path which should be used for condition matching (usually the resource path)
481
+ */
482
+ nameForCondition() {
483
+ const resource = /** @type {string} */ (this.getResource());
484
+ const idx = resource.indexOf("?");
485
+ if (idx >= 0) return resource.slice(0, idx);
486
+ return resource;
487
+ }
488
+
489
+ /**
490
+ * Assuming this module is in the cache. Update the (cached) module with
491
+ * the fresh module from the factory. Usually updates internal references
492
+ * and properties.
493
+ * @param {Module} module fresh module
494
+ * @returns {void}
495
+ */
496
+ updateCacheModule(module) {
497
+ super.updateCacheModule(module);
498
+ const m = /** @type {NormalModule} */ (module);
499
+ this.binary = m.binary;
500
+ this.request = m.request;
501
+ this.userRequest = m.userRequest;
502
+ this.rawRequest = m.rawRequest;
503
+ this.parser = m.parser;
504
+ this.parserOptions = m.parserOptions;
505
+ this.generator = m.generator;
506
+ this.generatorOptions = m.generatorOptions;
507
+ this.resource = m.resource;
508
+ this.resourceResolveData = m.resourceResolveData;
509
+ this.context = m.context;
510
+ this.matchResource = m.matchResource;
511
+ this.loaders = m.loaders;
512
+ this.extractSourceMap = m.extractSourceMap;
513
+ }
514
+
515
+ /**
516
+ * Assuming this module is in the cache. Remove internal references to allow freeing some memory.
517
+ */
518
+ cleanupForCache() {
519
+ // Make sure to cache types and sizes before cleanup when this module has been built
520
+ // They are accessed by the stats and we don't want them to crash after cleanup
521
+ // TODO reconsider this for webpack 6
522
+ if (this.buildInfo) {
523
+ if (this._sourceTypes === undefined) this.getSourceTypes();
524
+ for (const type of /** @type {SourceTypes} */ (this._sourceTypes)) {
525
+ this.size(type);
526
+ }
527
+ }
528
+ super.cleanupForCache();
529
+ this.parser = undefined;
530
+ this.parserOptions = undefined;
531
+ this.generator = undefined;
532
+ this.generatorOptions = undefined;
533
+ }
534
+
535
+ /**
536
+ * Module should be unsafe cached. Get data that's needed for that.
537
+ * This data will be passed to restoreFromUnsafeCache later.
538
+ * @returns {UnsafeCacheData} cached data
539
+ */
540
+ getUnsafeCacheData() {
541
+ const data = super.getUnsafeCacheData();
542
+ data.parserOptions = this.parserOptions;
543
+ data.generatorOptions = this.generatorOptions;
544
+ return data;
545
+ }
546
+
547
+ /**
548
+ * restore unsafe cache data
549
+ * @param {UnsafeCacheData} unsafeCacheData data from getUnsafeCacheData
550
+ * @param {NormalModuleFactory} normalModuleFactory the normal module factory handling the unsafe caching
551
+ */
552
+ restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory) {
553
+ this._restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory);
554
+ }
555
+
556
+ /**
557
+ * restore unsafe cache data
558
+ * @param {UnsafeCacheData} unsafeCacheData data from getUnsafeCacheData
559
+ * @param {NormalModuleFactory} normalModuleFactory the normal module factory handling the unsafe caching
560
+ */
561
+ _restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory) {
562
+ super._restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory);
563
+ this.parserOptions = unsafeCacheData.parserOptions;
564
+ this.parser = normalModuleFactory.getParser(this.type, this.parserOptions);
565
+ this.generatorOptions = unsafeCacheData.generatorOptions;
566
+ this.generator = normalModuleFactory.getGenerator(
567
+ this.type,
568
+ this.generatorOptions
569
+ );
570
+ // we assume the generator behaves identically and keep cached sourceTypes/Sizes
571
+ }
572
+
573
+ /**
574
+ * @param {string} context the compilation context
575
+ * @param {string} name the asset name
576
+ * @param {string | Buffer} content the content
577
+ * @param {(string | RawSourceMap)=} sourceMap an optional source map
578
+ * @param {AssociatedObjectForCache=} associatedObjectForCache object for caching
579
+ * @returns {Source} the created source
580
+ */
581
+ createSourceForAsset(
582
+ context,
583
+ name,
584
+ content,
585
+ sourceMap,
586
+ associatedObjectForCache
587
+ ) {
588
+ if (sourceMap) {
589
+ if (
590
+ typeof sourceMap === "string" &&
591
+ (this.useSourceMap || this.useSimpleSourceMap)
592
+ ) {
593
+ return new OriginalSource(
594
+ content,
595
+ contextifySourceUrl(context, sourceMap, associatedObjectForCache)
596
+ );
597
+ }
598
+
599
+ if (this.useSourceMap) {
600
+ return new SourceMapSource(
601
+ content,
602
+ name,
603
+ contextifySourceMap(
604
+ context,
605
+ /** @type {RawSourceMap} */
606
+ (sourceMap),
607
+ associatedObjectForCache
608
+ )
609
+ );
610
+ }
611
+ }
612
+
613
+ return new RawSource(content);
614
+ }
615
+
616
+ /**
617
+ * @private
618
+ * @template T
619
+ * @param {ResolverWithOptions} resolver a resolver
620
+ * @param {WebpackOptions} options webpack options
621
+ * @param {Compilation} compilation the compilation
622
+ * @param {InputFileSystem} fs file system from reading
623
+ * @param {NormalModuleCompilationHooks} hooks the hooks
624
+ * @returns {import("../declarations/LoaderContext").LoaderContext<T>} loader context
625
+ */
626
+ _createLoaderContext(resolver, options, compilation, fs, hooks) {
627
+ const { requestShortener } = compilation.runtimeTemplate;
628
+ const getCurrentLoaderName = () => {
629
+ const currentLoader = this.getCurrentLoader(
630
+ /** @type {AnyLoaderContext} */
631
+ (loaderContext)
632
+ );
633
+ if (!currentLoader) return "(not in loader scope)";
634
+ return requestShortener.shorten(currentLoader.loader);
635
+ };
636
+ /**
637
+ * @returns {ResolveContext} resolve context
638
+ */
639
+ const getResolveContext = () => ({
640
+ fileDependencies: {
641
+ add: (d) =>
642
+ /** @type {AnyLoaderContext} */
643
+ (loaderContext).addDependency(d)
644
+ },
645
+ contextDependencies: {
646
+ add: (d) =>
647
+ /** @type {AnyLoaderContext} */
648
+ (loaderContext).addContextDependency(d)
649
+ },
650
+ missingDependencies: {
651
+ add: (d) =>
652
+ /** @type {AnyLoaderContext} */
653
+ (loaderContext).addMissingDependency(d)
654
+ }
655
+ });
656
+ const getAbsolutify = memoize(() =>
657
+ absolutify.bindCache(compilation.compiler.root)
658
+ );
659
+ const getAbsolutifyInContext = memoize(() =>
660
+ absolutify.bindContextCache(
661
+ /** @type {string} */
662
+ (this.context),
663
+ compilation.compiler.root
664
+ )
665
+ );
666
+ const getContextify = memoize(() =>
667
+ contextify.bindCache(compilation.compiler.root)
668
+ );
669
+ const getContextifyInContext = memoize(() =>
670
+ contextify.bindContextCache(
671
+ /** @type {string} */
672
+ (this.context),
673
+ compilation.compiler.root
674
+ )
675
+ );
676
+ const utils = {
677
+ /**
678
+ * @param {string} context context
679
+ * @param {string} request request
680
+ * @returns {string} result
681
+ */
682
+ absolutify: (context, request) =>
683
+ context === this.context
684
+ ? getAbsolutifyInContext()(request)
685
+ : getAbsolutify()(context, request),
686
+ /**
687
+ * @param {string} context context
688
+ * @param {string} request request
689
+ * @returns {string} result
690
+ */
691
+ contextify: (context, request) =>
692
+ context === this.context
693
+ ? getContextifyInContext()(request)
694
+ : getContextify()(context, request),
695
+ /**
696
+ * @param {HashFunction=} type type
697
+ * @returns {Hash} hash
698
+ */
699
+ createHash: (type) =>
700
+ createHash(type || compilation.outputOptions.hashFunction)
701
+ };
702
+ /** @type {NormalModuleLoaderContext<T>} */
703
+ const loaderContext = {
704
+ version: 2,
705
+ /**
706
+ * @param {import("../declarations/LoaderContext").Schema=} schema schema
707
+ * @returns {T} options
708
+ */
709
+ getOptions: (schema) => {
710
+ const loader = this.getCurrentLoader(
711
+ /** @type {AnyLoaderContext} */
712
+ (loaderContext)
713
+ );
714
+
715
+ let { options } = /** @type {LoaderItem} */ (loader);
716
+
717
+ if (typeof options === "string") {
718
+ if (options.startsWith("{") && options.endsWith("}")) {
719
+ try {
720
+ options = parseJson(options);
721
+ } catch (err) {
722
+ throw new Error(
723
+ `Cannot parse string options: ${/** @type {Error} */ (err).message}`,
724
+ { cause: err }
725
+ );
726
+ }
727
+ } else {
728
+ options = querystring.parse(options, "&", "=", {
729
+ maxKeys: 0
730
+ });
731
+ }
732
+ }
733
+
734
+ if (options === null || options === undefined) {
735
+ options = {};
736
+ }
737
+
738
+ if (schema) {
739
+ let name = "Loader";
740
+ let baseDataPath = "options";
741
+ /** @type {RegExpExecArray | null} */
742
+ let match;
743
+ if (schema.title && (match = /^(.+) (.+)$/.exec(schema.title))) {
744
+ [, name, baseDataPath] = match;
745
+ }
746
+ getValidate()(schema, /** @type {EXPECTED_OBJECT} */ (options), {
747
+ name,
748
+ baseDataPath
749
+ });
750
+ }
751
+
752
+ return /** @type {T} */ (options);
753
+ },
754
+ emitWarning: (warning) => {
755
+ if (!(warning instanceof Error)) {
756
+ warning = new NonErrorEmittedError(warning);
757
+ }
758
+ this.addWarning(
759
+ new ModuleWarning(warning, {
760
+ from: getCurrentLoaderName()
761
+ })
762
+ );
763
+ },
764
+ emitError: (error) => {
765
+ if (!(error instanceof Error)) {
766
+ error = new NonErrorEmittedError(error);
767
+ }
768
+ this.addError(
769
+ new ModuleError(error, {
770
+ from: getCurrentLoaderName()
771
+ })
772
+ );
773
+ },
774
+ getLogger: (name) => {
775
+ const currentLoader = this.getCurrentLoader(
776
+ /** @type {AnyLoaderContext} */
777
+ (loaderContext)
778
+ );
779
+ return compilation.getLogger(() =>
780
+ [currentLoader && currentLoader.loader, name, this.identifier()]
781
+ .filter(Boolean)
782
+ .join("|")
783
+ );
784
+ },
785
+ resolve(context, request, callback) {
786
+ resolver.resolve({}, context, request, getResolveContext(), callback);
787
+ },
788
+ getResolve(options) {
789
+ const child = options ? resolver.withOptions(options) : resolver;
790
+ return /** @type {ReturnType<import("../declarations/LoaderContext").NormalModuleLoaderContext<T>["getResolve"]>} */ (
791
+ (context, request, callback) => {
792
+ if (callback) {
793
+ child.resolve(
794
+ {},
795
+ context,
796
+ request,
797
+ getResolveContext(),
798
+ callback
799
+ );
800
+ } else {
801
+ return new Promise((resolve, reject) => {
802
+ child.resolve(
803
+ {},
804
+ context,
805
+ request,
806
+ getResolveContext(),
807
+ (err, result) => {
808
+ if (err) reject(err);
809
+ else resolve(result);
810
+ }
811
+ );
812
+ });
813
+ }
814
+ }
815
+ );
816
+ },
817
+ emitFile: (name, content, sourceMap, assetInfo) => {
818
+ const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
819
+
820
+ if (!buildInfo.assets) {
821
+ buildInfo.assets = Object.create(null);
822
+ buildInfo.assetsInfo = new Map();
823
+ }
824
+
825
+ const assets =
826
+ /** @type {NonNullable<KnownBuildInfo["assets"]>} */
827
+ (buildInfo.assets);
828
+ const assetsInfo =
829
+ /** @type {NonNullable<KnownBuildInfo["assetsInfo"]>} */
830
+ (buildInfo.assetsInfo);
831
+
832
+ assets[name] = this.createSourceForAsset(
833
+ options.context,
834
+ name,
835
+ content,
836
+ sourceMap,
837
+ compilation.compiler.root
838
+ );
839
+ assetsInfo.set(name, assetInfo);
840
+ },
841
+ addBuildDependency: (dep) => {
842
+ const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
843
+
844
+ if (buildInfo.buildDependencies === undefined) {
845
+ buildInfo.buildDependencies = new LazySet();
846
+ }
847
+ buildInfo.buildDependencies.add(dep);
848
+ },
849
+ utils,
850
+ rootContext: options.context,
851
+ webpack: true,
852
+ sourceMap: Boolean(this.useSourceMap),
853
+ mode: options.mode || "production",
854
+ hashFunction: options.output.hashFunction,
855
+ hashDigest: options.output.hashDigest,
856
+ hashDigestLength: options.output.hashDigestLength,
857
+ hashSalt: options.output.hashSalt,
858
+ _module: this,
859
+ _compilation: compilation,
860
+ _compiler: compilation.compiler,
861
+ fs
862
+ };
863
+
864
+ Object.assign(loaderContext, options.loader);
865
+
866
+ hooks.loader.call(
867
+ /** @type {AnyLoaderContext} */
868
+ (loaderContext),
869
+ this
870
+ );
871
+
872
+ return /** @type {AnyLoaderContext} */ (loaderContext);
873
+ }
874
+
875
+ // TODO remove `loaderContext` in webpack@6
876
+ /**
877
+ * @param {AnyLoaderContext} loaderContext loader context
878
+ * @param {number} index index
879
+ * @returns {LoaderItem | null} loader
880
+ */
881
+ getCurrentLoader(loaderContext, index = loaderContext.loaderIndex) {
882
+ if (
883
+ this.loaders &&
884
+ this.loaders.length &&
885
+ index < this.loaders.length &&
886
+ index >= 0 &&
887
+ this.loaders[index]
888
+ ) {
889
+ return this.loaders[index];
890
+ }
891
+ return null;
892
+ }
893
+
894
+ /**
895
+ * @param {string} context the compilation context
896
+ * @param {string | Buffer} content the content
897
+ * @param {(string | RawSourceMap | null)=} sourceMap an optional source map
898
+ * @param {AssociatedObjectForCache=} associatedObjectForCache object for caching
899
+ * @returns {Source} the created source
900
+ */
901
+ createSource(context, content, sourceMap, associatedObjectForCache) {
902
+ if (Buffer.isBuffer(content)) {
903
+ return new RawSource(content);
904
+ }
905
+
906
+ // if there is no identifier return raw source
907
+ if (!this.identifier) {
908
+ return new RawSource(content);
909
+ }
910
+
911
+ // from here on we assume we have an identifier
912
+ const identifier = this.identifier();
913
+
914
+ if (this.useSourceMap && sourceMap) {
915
+ return new SourceMapSource(
916
+ content,
917
+ contextifySourceUrl(context, identifier, associatedObjectForCache),
918
+ contextifySourceMap(context, sourceMap, associatedObjectForCache)
919
+ );
920
+ }
921
+
922
+ if (this.useSourceMap || this.useSimpleSourceMap) {
923
+ return new OriginalSource(
924
+ content,
925
+ contextifySourceUrl(context, identifier, associatedObjectForCache)
926
+ );
927
+ }
928
+
929
+ return new RawSource(content);
930
+ }
931
+
932
+ /**
933
+ * @param {WebpackOptions} options webpack options
934
+ * @param {Compilation} compilation the compilation
935
+ * @param {ResolverWithOptions} resolver the resolver
936
+ * @param {InputFileSystem} fs the file system
937
+ * @param {NormalModuleCompilationHooks} hooks the hooks
938
+ * @param {BuildCallback} callback callback function
939
+ * @returns {void}
940
+ */
941
+ _doBuild(options, compilation, resolver, fs, hooks, callback) {
942
+ const loaderContext = this._createLoaderContext(
943
+ resolver,
944
+ options,
945
+ compilation,
946
+ fs,
947
+ hooks
948
+ );
949
+
950
+ /**
951
+ * @param {Error | null} err err
952
+ * @param {(Result | null)=} result_ result
953
+ * @returns {void}
954
+ */
955
+ const processResult = (err, result_) => {
956
+ if (err) {
957
+ if (!(err instanceof Error)) {
958
+ err = new NonErrorEmittedError(err);
959
+ }
960
+ const currentLoader = this.getCurrentLoader(loaderContext);
961
+ const error = new ModuleBuildError(err, {
962
+ from:
963
+ currentLoader &&
964
+ compilation.runtimeTemplate.requestShortener.shorten(
965
+ currentLoader.loader
966
+ )
967
+ });
968
+ return callback(error);
969
+ }
970
+ const result = hooks.processResult.call(
971
+ /** @type {Result} */
972
+ (result_),
973
+ this
974
+ );
975
+ const source = result[0];
976
+ const sourceMap = result.length >= 1 ? result[1] : null;
977
+ const extraInfo = result.length >= 2 ? result[2] : null;
978
+
979
+ if (!Buffer.isBuffer(source) && typeof source !== "string") {
980
+ const currentLoader = this.getCurrentLoader(loaderContext, 0);
981
+ const err = new Error(
982
+ `Final loader (${
983
+ currentLoader
984
+ ? compilation.runtimeTemplate.requestShortener.shorten(
985
+ currentLoader.loader
986
+ )
987
+ : "unknown"
988
+ }) didn't return a Buffer or String`
989
+ );
990
+ const error = new ModuleBuildError(err);
991
+ return callback(error);
992
+ }
993
+
994
+ const isBinaryModule =
995
+ this.generatorOptions && this.generatorOptions.binary !== undefined
996
+ ? this.generatorOptions.binary
997
+ : this.binary;
998
+
999
+ this._source = this.createSource(
1000
+ options.context,
1001
+ isBinaryModule ? asBuffer(source) : asString(source),
1002
+ sourceMap,
1003
+ compilation.compiler.root
1004
+ );
1005
+ if (this._sourceSizes !== undefined) this._sourceSizes.clear();
1006
+ /** @type {PreparsedAst | null} */
1007
+ this._ast =
1008
+ typeof extraInfo === "object" &&
1009
+ extraInfo !== null &&
1010
+ extraInfo.webpackAST !== undefined
1011
+ ? extraInfo.webpackAST
1012
+ : null;
1013
+ return callback();
1014
+ };
1015
+
1016
+ const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
1017
+
1018
+ buildInfo.fileDependencies = new LazySet();
1019
+ buildInfo.contextDependencies = new LazySet();
1020
+ buildInfo.missingDependencies = new LazySet();
1021
+ buildInfo.cacheable = true;
1022
+
1023
+ try {
1024
+ hooks.beforeLoaders.call(
1025
+ this.loaders,
1026
+ this,
1027
+ /** @type {AnyLoaderContext} */
1028
+ (loaderContext)
1029
+ );
1030
+ } catch (err) {
1031
+ processResult(/** @type {Error} */ (err));
1032
+ return;
1033
+ }
1034
+
1035
+ if (this.loaders.length > 0) {
1036
+ /** @type {BuildInfo} */
1037
+ (this.buildInfo).buildDependencies = new LazySet();
1038
+ }
1039
+
1040
+ runLoaders(
1041
+ {
1042
+ resource: this.resource,
1043
+ loaders: this.loaders,
1044
+ context: loaderContext,
1045
+ /**
1046
+ * @param {AnyLoaderContext} loaderContext the loader context
1047
+ * @param {string} resourcePath the resource Path
1048
+ * @param {(err: Error | null, result?: string | Buffer, sourceMap?: Result[1]) => void} callback callback
1049
+ * @returns {Promise<void>}
1050
+ */
1051
+ processResource: async (loaderContext, resourcePath, callback) => {
1052
+ /** @type {ReadResource} */
1053
+ const readResource = (resourcePath, getLoaderContext) => {
1054
+ const scheme = getScheme(resourcePath);
1055
+ return new Promise((resolve, reject) => {
1056
+ hooks.readResource
1057
+ .for(scheme)
1058
+ .callAsync(getLoaderContext(resourcePath), (err, result) => {
1059
+ if (err) {
1060
+ reject(err);
1061
+ } else {
1062
+ if (typeof result !== "string" && !result) {
1063
+ return reject(
1064
+ new UnhandledSchemeError(
1065
+ /** @type {string} */
1066
+ (scheme),
1067
+ resourcePath
1068
+ )
1069
+ );
1070
+ }
1071
+ resolve(result);
1072
+ }
1073
+ });
1074
+ });
1075
+ };
1076
+ try {
1077
+ const result = await readResource(
1078
+ resourcePath,
1079
+ () => loaderContext
1080
+ );
1081
+ if (
1082
+ this.extractSourceMap &&
1083
+ (this.useSourceMap || this.useSimpleSourceMap)
1084
+ ) {
1085
+ try {
1086
+ const { source, sourceMap } = await getExtractSourceMap()(
1087
+ result,
1088
+ resourcePath,
1089
+ /** @type {ReadResource} */
1090
+ (resourcePath) =>
1091
+ readResource(
1092
+ resourcePath,
1093
+ (resourcePath) =>
1094
+ /** @type {AnyLoaderContext} */
1095
+ ({
1096
+ addDependency(dependency) {
1097
+ loaderContext.addDependency(dependency);
1098
+ },
1099
+ fs: loaderContext.fs,
1100
+ _module: undefined,
1101
+ resourcePath,
1102
+ resource: resourcePath
1103
+ })
1104
+ ).catch((err) => {
1105
+ throw new Error(
1106
+ `Failed to parse source map. ${/** @type {Error} */ (err).message}`
1107
+ );
1108
+ })
1109
+ );
1110
+ return callback(null, source, sourceMap);
1111
+ } catch (err) {
1112
+ this.addWarning(new ModuleWarning(/** @type {Error} */ (err)));
1113
+ return callback(null, result);
1114
+ }
1115
+ }
1116
+ return callback(null, result);
1117
+ } catch (error) {
1118
+ return callback(/** @type {Error} */ (error));
1119
+ }
1120
+ }
1121
+ },
1122
+ (err, result) => {
1123
+ // Cleanup loaderContext to avoid leaking memory in ICs
1124
+ loaderContext._compilation =
1125
+ loaderContext._compiler =
1126
+ loaderContext._module =
1127
+ loaderContext.fs =
1128
+ /** @type {EXPECTED_ANY} */
1129
+ (undefined);
1130
+
1131
+ if (!result) {
1132
+ /** @type {BuildInfo} */
1133
+ (this.buildInfo).cacheable = false;
1134
+ return processResult(
1135
+ err || new Error("No result from loader-runner processing"),
1136
+ null
1137
+ );
1138
+ }
1139
+
1140
+ const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
1141
+
1142
+ const fileDependencies =
1143
+ /** @type {NonNullable<KnownBuildInfo["fileDependencies"]>} */
1144
+ (buildInfo.fileDependencies);
1145
+ const contextDependencies =
1146
+ /** @type {NonNullable<KnownBuildInfo["contextDependencies"]>} */
1147
+ (buildInfo.contextDependencies);
1148
+ const missingDependencies =
1149
+ /** @type {NonNullable<KnownBuildInfo["missingDependencies"]>} */
1150
+ (buildInfo.missingDependencies);
1151
+
1152
+ fileDependencies.addAll(result.fileDependencies);
1153
+ contextDependencies.addAll(result.contextDependencies);
1154
+ missingDependencies.addAll(result.missingDependencies);
1155
+ for (const loader of this.loaders) {
1156
+ const buildDependencies =
1157
+ /** @type {NonNullable<KnownBuildInfo["buildDependencies"]>} */
1158
+ (buildInfo.buildDependencies);
1159
+
1160
+ buildDependencies.add(loader.loader);
1161
+ }
1162
+ buildInfo.cacheable = buildInfo.cacheable && result.cacheable;
1163
+ processResult(err, result.result);
1164
+ }
1165
+ );
1166
+ }
1167
+
1168
+ /**
1169
+ * @param {WebpackError} error the error
1170
+ * @returns {void}
1171
+ */
1172
+ markModuleAsErrored(error) {
1173
+ // Restore build meta from successful build to keep importing state
1174
+ this.buildMeta = { ...this._lastSuccessfulBuildMeta };
1175
+ this.error = error;
1176
+ this.addError(error);
1177
+ }
1178
+
1179
+ /**
1180
+ * @param {Exclude<NoParse, EXPECTED_ANY[]>} rule rule
1181
+ * @param {string} content content
1182
+ * @returns {boolean} result
1183
+ */
1184
+ applyNoParseRule(rule, content) {
1185
+ // must start with "rule" if rule is a string
1186
+ if (typeof rule === "string") {
1187
+ return content.startsWith(rule);
1188
+ }
1189
+
1190
+ if (typeof rule === "function") {
1191
+ return rule(content);
1192
+ }
1193
+ // we assume rule is a regexp
1194
+ return rule.test(content);
1195
+ }
1196
+
1197
+ /**
1198
+ * @param {undefined | NoParse} noParseRule no parse rule
1199
+ * @param {string} request request
1200
+ * @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
1201
+ */
1202
+ shouldPreventParsing(noParseRule, request) {
1203
+ // if no noParseRule exists, return false
1204
+ // the module !must! be parsed.
1205
+ if (!noParseRule) {
1206
+ return false;
1207
+ }
1208
+
1209
+ // we only have one rule to check
1210
+ if (!Array.isArray(noParseRule)) {
1211
+ // returns "true" if the module is !not! to be parsed
1212
+ return this.applyNoParseRule(noParseRule, request);
1213
+ }
1214
+
1215
+ for (let i = 0; i < noParseRule.length; i++) {
1216
+ const rule = noParseRule[i];
1217
+ // early exit on first truthy match
1218
+ // this module is !not! to be parsed
1219
+ if (this.applyNoParseRule(rule, request)) {
1220
+ return true;
1221
+ }
1222
+ }
1223
+ // no match found, so this module !should! be parsed
1224
+ return false;
1225
+ }
1226
+
1227
+ /**
1228
+ * @param {Compilation} compilation compilation
1229
+ * @private
1230
+ */
1231
+ _initBuildHash(compilation) {
1232
+ const hash = createHash(compilation.outputOptions.hashFunction);
1233
+ if (this._source) {
1234
+ hash.update("source");
1235
+ this._source.updateHash(hash);
1236
+ }
1237
+ hash.update("meta");
1238
+ hash.update(JSON.stringify(this.buildMeta));
1239
+ /** @type {BuildInfo} */
1240
+ (this.buildInfo).hash = hash.digest("hex");
1241
+ }
1242
+
1243
+ /**
1244
+ * @param {WebpackOptions} options webpack options
1245
+ * @param {Compilation} compilation the compilation
1246
+ * @param {ResolverWithOptions} resolver the resolver
1247
+ * @param {InputFileSystem} fs the file system
1248
+ * @param {BuildCallback} callback callback function
1249
+ * @returns {void}
1250
+ */
1251
+ build(options, compilation, resolver, fs, callback) {
1252
+ this._forceBuild = false;
1253
+ this._source = null;
1254
+ if (this._sourceSizes !== undefined) this._sourceSizes.clear();
1255
+ this._sourceTypes = undefined;
1256
+ this._ast = null;
1257
+ this.error = null;
1258
+ this.clearWarningsAndErrors();
1259
+ this.clearDependenciesAndBlocks();
1260
+ this.buildMeta = {};
1261
+ this.buildInfo = {
1262
+ cacheable: false,
1263
+ parsed: true,
1264
+ fileDependencies: undefined,
1265
+ contextDependencies: undefined,
1266
+ missingDependencies: undefined,
1267
+ buildDependencies: undefined,
1268
+ valueDependencies: undefined,
1269
+ hash: undefined,
1270
+ assets: undefined,
1271
+ assetsInfo: undefined
1272
+ };
1273
+
1274
+ const startTime = compilation.compiler.fsStartTime || Date.now();
1275
+
1276
+ const hooks = NormalModule.getCompilationHooks(compilation);
1277
+
1278
+ return this._doBuild(options, compilation, resolver, fs, hooks, (err) => {
1279
+ // if we have an error mark module as failed and exit
1280
+ if (err) {
1281
+ this.markModuleAsErrored(err);
1282
+ this._initBuildHash(compilation);
1283
+ return callback();
1284
+ }
1285
+
1286
+ /**
1287
+ * @param {Error} e error
1288
+ * @returns {void}
1289
+ */
1290
+ const handleParseError = (e) => {
1291
+ const source = /** @type {Source} */ (this._source).source();
1292
+ const loaders = this.loaders.map((item) =>
1293
+ contextify(options.context, item.loader, compilation.compiler.root)
1294
+ );
1295
+ const error = new ModuleParseError(source, e, loaders, this.type);
1296
+ this.markModuleAsErrored(error);
1297
+ this._initBuildHash(compilation);
1298
+ return callback();
1299
+ };
1300
+
1301
+ const handleParseResult = () => {
1302
+ this.dependencies.sort(
1303
+ concatComparators(
1304
+ compareSelect((a) => a.loc, compareLocations),
1305
+ keepOriginalOrder(this.dependencies)
1306
+ )
1307
+ );
1308
+ sortWithSourceOrder(this.dependencies, new WeakMap());
1309
+ this._initBuildHash(compilation);
1310
+ this._lastSuccessfulBuildMeta =
1311
+ /** @type {BuildMeta} */
1312
+ (this.buildMeta);
1313
+ return handleBuildDone();
1314
+ };
1315
+
1316
+ const handleBuildDone = () => {
1317
+ try {
1318
+ hooks.beforeSnapshot.call(this);
1319
+ } catch (err) {
1320
+ this.markModuleAsErrored(/** @type {WebpackError} */ (err));
1321
+ return callback();
1322
+ }
1323
+
1324
+ const snapshotOptions = compilation.options.snapshot.module;
1325
+ const { cacheable } = /** @type {BuildInfo} */ (this.buildInfo);
1326
+ if (!cacheable || !snapshotOptions) {
1327
+ return callback();
1328
+ }
1329
+ // add warning for all non-absolute paths in fileDependencies, etc
1330
+ // This makes it easier to find problems with watching and/or caching
1331
+ /** @type {undefined | Set<string>} */
1332
+ let nonAbsoluteDependencies;
1333
+ /**
1334
+ * @param {FileSystemDependencies} deps deps
1335
+ */
1336
+ const checkDependencies = (deps) => {
1337
+ for (const dep of deps) {
1338
+ if (!ABSOLUTE_PATH_REGEX.test(dep)) {
1339
+ if (nonAbsoluteDependencies === undefined) {
1340
+ nonAbsoluteDependencies = new Set();
1341
+ }
1342
+ nonAbsoluteDependencies.add(dep);
1343
+ deps.delete(dep);
1344
+ try {
1345
+ const depWithoutGlob = dep.replace(/[\\/]?\*.*$/, "");
1346
+ const absolute = join(
1347
+ compilation.fileSystemInfo.fs,
1348
+ /** @type {string} */
1349
+ (this.context),
1350
+ depWithoutGlob
1351
+ );
1352
+ if (absolute !== dep && ABSOLUTE_PATH_REGEX.test(absolute)) {
1353
+ (depWithoutGlob !== dep
1354
+ ? /** @type {NonNullable<KnownBuildInfo["contextDependencies"]>} */
1355
+ (
1356
+ /** @type {BuildInfo} */
1357
+ (this.buildInfo).contextDependencies
1358
+ )
1359
+ : deps
1360
+ ).add(absolute);
1361
+ }
1362
+ } catch (_err) {
1363
+ // ignore
1364
+ }
1365
+ }
1366
+ }
1367
+ };
1368
+ const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
1369
+ const fileDependencies =
1370
+ /** @type {NonNullable<KnownBuildInfo["fileDependencies"]>} */
1371
+ (buildInfo.fileDependencies);
1372
+ const contextDependencies =
1373
+ /** @type {NonNullable<KnownBuildInfo["contextDependencies"]>} */
1374
+ (buildInfo.contextDependencies);
1375
+ const missingDependencies =
1376
+ /** @type {NonNullable<KnownBuildInfo["missingDependencies"]>} */
1377
+ (buildInfo.missingDependencies);
1378
+ checkDependencies(fileDependencies);
1379
+ checkDependencies(missingDependencies);
1380
+ checkDependencies(contextDependencies);
1381
+ if (nonAbsoluteDependencies !== undefined) {
1382
+ const InvalidDependenciesModuleWarning =
1383
+ getInvalidDependenciesModuleWarning();
1384
+ this.addWarning(
1385
+ new InvalidDependenciesModuleWarning(this, nonAbsoluteDependencies)
1386
+ );
1387
+ }
1388
+ // convert file/context/missingDependencies into filesystem snapshot
1389
+ compilation.fileSystemInfo.createSnapshot(
1390
+ startTime,
1391
+ fileDependencies,
1392
+ contextDependencies,
1393
+ missingDependencies,
1394
+ snapshotOptions,
1395
+ (err, snapshot) => {
1396
+ if (err) {
1397
+ this.markModuleAsErrored(err);
1398
+ return;
1399
+ }
1400
+ buildInfo.fileDependencies = undefined;
1401
+ buildInfo.contextDependencies = undefined;
1402
+ buildInfo.missingDependencies = undefined;
1403
+ buildInfo.snapshot = snapshot;
1404
+ return callback();
1405
+ }
1406
+ );
1407
+ };
1408
+
1409
+ try {
1410
+ hooks.beforeParse.call(this);
1411
+ } catch (err) {
1412
+ this.markModuleAsErrored(/** @type {WebpackError} */ (err));
1413
+ this._initBuildHash(compilation);
1414
+ return callback();
1415
+ }
1416
+
1417
+ // check if this module should !not! be parsed.
1418
+ // if so, exit here;
1419
+ const noParseRule = options.module && options.module.noParse;
1420
+ if (this.shouldPreventParsing(noParseRule, this.request)) {
1421
+ // We assume that we need module and exports
1422
+ /** @type {BuildInfo} */
1423
+ (this.buildInfo).parsed = false;
1424
+ this._initBuildHash(compilation);
1425
+ return handleBuildDone();
1426
+ }
1427
+
1428
+ try {
1429
+ const source = /** @type {Source} */ (this._source).source();
1430
+ /** @type {Parser} */
1431
+ (this.parser).parse(this._ast || source, {
1432
+ source,
1433
+ current: this,
1434
+ module: this,
1435
+ compilation,
1436
+ options
1437
+ });
1438
+ } catch (parseErr) {
1439
+ handleParseError(/** @type {Error} */ (parseErr));
1440
+ return;
1441
+ }
1442
+ handleParseResult();
1443
+ });
1444
+ }
1445
+
1446
+ /**
1447
+ * @param {ConcatenationBailoutReasonContext} context context
1448
+ * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
1449
+ */
1450
+ getConcatenationBailoutReason(context) {
1451
+ return /** @type {Generator} */ (
1452
+ this.generator
1453
+ ).getConcatenationBailoutReason(this, context);
1454
+ }
1455
+
1456
+ /**
1457
+ * @param {ModuleGraph} moduleGraph the module graph
1458
+ * @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
1459
+ */
1460
+ getSideEffectsConnectionState(moduleGraph) {
1461
+ if (this.factoryMeta !== undefined) {
1462
+ if (this.factoryMeta.sideEffectFree) return false;
1463
+ if (this.factoryMeta.sideEffectFree === false) return true;
1464
+ }
1465
+ if (this.buildMeta !== undefined && this.buildMeta.sideEffectFree) {
1466
+ if (this._isEvaluatingSideEffects) {
1467
+ return ModuleGraphConnection.CIRCULAR_CONNECTION;
1468
+ }
1469
+ this._isEvaluatingSideEffects = true;
1470
+ /** @type {ConnectionState} */
1471
+ let current = false;
1472
+ for (const dep of this.dependencies) {
1473
+ const state = dep.getModuleEvaluationSideEffectsState(moduleGraph);
1474
+ if (state === true) {
1475
+ if (
1476
+ this._addedSideEffectsBailout === undefined
1477
+ ? ((this._addedSideEffectsBailout = new WeakSet()), true)
1478
+ : !this._addedSideEffectsBailout.has(moduleGraph)
1479
+ ) {
1480
+ this._addedSideEffectsBailout.add(moduleGraph);
1481
+ moduleGraph
1482
+ .getOptimizationBailout(this)
1483
+ .push(
1484
+ () =>
1485
+ `Dependency (${
1486
+ dep.type
1487
+ }) with side effects at ${formatLocation(dep.loc)}`
1488
+ );
1489
+ }
1490
+ this._isEvaluatingSideEffects = false;
1491
+ return true;
1492
+ } else if (state !== ModuleGraphConnection.CIRCULAR_CONNECTION) {
1493
+ current = ModuleGraphConnection.addConnectionStates(current, state);
1494
+ }
1495
+ }
1496
+ this._isEvaluatingSideEffects = false;
1497
+ // When caching is implemented here, make sure to not cache when
1498
+ // at least one circular connection was in the loop above
1499
+ return current;
1500
+ }
1501
+ return true;
1502
+ }
1503
+
1504
+ /**
1505
+ * @returns {SourceTypes} types available (do not mutate)
1506
+ */
1507
+ getSourceTypes() {
1508
+ if (this._sourceTypes === undefined) {
1509
+ this._sourceTypes = /** @type {Generator} */ (this.generator).getTypes(
1510
+ this
1511
+ );
1512
+ }
1513
+ return this._sourceTypes;
1514
+ }
1515
+
1516
+ /**
1517
+ * @param {CodeGenerationContext} context context for code generation
1518
+ * @returns {CodeGenerationResult} result
1519
+ */
1520
+ codeGeneration({
1521
+ dependencyTemplates,
1522
+ runtimeTemplate,
1523
+ moduleGraph,
1524
+ chunkGraph,
1525
+ runtime,
1526
+ concatenationScope,
1527
+ codeGenerationResults,
1528
+ sourceTypes
1529
+ }) {
1530
+ /** @type {RuntimeRequirements} */
1531
+ const runtimeRequirements = new Set();
1532
+
1533
+ const { parsed } = /** @type {BuildInfo} */ (this.buildInfo);
1534
+
1535
+ if (!parsed) {
1536
+ runtimeRequirements.add(RuntimeGlobals.module);
1537
+ runtimeRequirements.add(RuntimeGlobals.exports);
1538
+ runtimeRequirements.add(RuntimeGlobals.thisAsExports);
1539
+ }
1540
+
1541
+ const getData = () => this._codeGeneratorData;
1542
+
1543
+ /** @type {Sources} */
1544
+ const sources = new Map();
1545
+ for (const type of sourceTypes || chunkGraph.getModuleSourceTypes(this)) {
1546
+ // TODO webpack@6 make generateError required
1547
+ const generator =
1548
+ /** @type {Generator & { generateError?: GenerateErrorFn }} */
1549
+ (this.generator);
1550
+ const source = this.error
1551
+ ? generator.generateError
1552
+ ? generator.generateError(this.error, this, {
1553
+ dependencyTemplates,
1554
+ runtimeTemplate,
1555
+ moduleGraph,
1556
+ chunkGraph,
1557
+ runtimeRequirements,
1558
+ runtime,
1559
+ concatenationScope,
1560
+ codeGenerationResults,
1561
+ getData,
1562
+ type
1563
+ })
1564
+ : new RawSource(
1565
+ `throw new Error(${JSON.stringify(this.error.message)});`
1566
+ )
1567
+ : generator.generate(this, {
1568
+ dependencyTemplates,
1569
+ runtimeTemplate,
1570
+ moduleGraph,
1571
+ chunkGraph,
1572
+ runtimeRequirements,
1573
+ runtime,
1574
+ concatenationScope,
1575
+ codeGenerationResults,
1576
+ getData,
1577
+ type
1578
+ });
1579
+
1580
+ if (source) {
1581
+ sources.set(type, new CachedSource(source));
1582
+ }
1583
+ }
1584
+
1585
+ /** @type {CodeGenerationResult} */
1586
+ const resultEntry = {
1587
+ sources,
1588
+ runtimeRequirements,
1589
+ data: this._codeGeneratorData
1590
+ };
1591
+ return resultEntry;
1592
+ }
1593
+
1594
+ /**
1595
+ * @returns {Source | null} the original source for the module before webpack transformation
1596
+ */
1597
+ originalSource() {
1598
+ return this._source;
1599
+ }
1600
+
1601
+ /**
1602
+ * @returns {void}
1603
+ */
1604
+ invalidateBuild() {
1605
+ this._forceBuild = true;
1606
+ }
1607
+
1608
+ /**
1609
+ * @param {NeedBuildContext} context context info
1610
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
1611
+ * @returns {void}
1612
+ */
1613
+ needBuild(context, callback) {
1614
+ const { fileSystemInfo, compilation, valueCacheVersions } = context;
1615
+ // build if enforced
1616
+ if (this._forceBuild) return callback(null, true);
1617
+
1618
+ // always try to build in case of an error
1619
+ if (this.error) return callback(null, true);
1620
+
1621
+ const { cacheable, snapshot, valueDependencies } =
1622
+ /** @type {BuildInfo} */ (this.buildInfo);
1623
+
1624
+ // always build when module is not cacheable
1625
+ if (!cacheable) return callback(null, true);
1626
+
1627
+ // build when there is no snapshot to check
1628
+ if (!snapshot) return callback(null, true);
1629
+
1630
+ // build when valueDependencies have changed
1631
+ if (valueDependencies) {
1632
+ if (!valueCacheVersions) return callback(null, true);
1633
+ for (const [key, value] of valueDependencies) {
1634
+ if (value === undefined) return callback(null, true);
1635
+ const current = valueCacheVersions.get(key);
1636
+ if (
1637
+ value !== current &&
1638
+ (typeof value === "string" ||
1639
+ typeof current === "string" ||
1640
+ current === undefined ||
1641
+ !isSubset(value, current))
1642
+ ) {
1643
+ return callback(null, true);
1644
+ }
1645
+ }
1646
+ }
1647
+
1648
+ // check snapshot for validity
1649
+ fileSystemInfo.checkSnapshotValid(snapshot, (err, valid) => {
1650
+ if (err) return callback(err);
1651
+ if (!valid) return callback(null, true);
1652
+ const hooks = NormalModule.getCompilationHooks(compilation);
1653
+ hooks.needBuild.callAsync(this, context, (err, needBuild) => {
1654
+ if (err) {
1655
+ return callback(
1656
+ HookWebpackError.makeWebpackError(
1657
+ err,
1658
+ "NormalModule.getCompilationHooks().needBuild"
1659
+ )
1660
+ );
1661
+ }
1662
+ callback(null, Boolean(needBuild));
1663
+ });
1664
+ });
1665
+ }
1666
+
1667
+ /**
1668
+ * @param {string=} type the source type for which the size should be estimated
1669
+ * @returns {number} the estimated size of the module (must be non-zero)
1670
+ */
1671
+ size(type) {
1672
+ const cachedSize =
1673
+ this._sourceSizes === undefined ? undefined : this._sourceSizes.get(type);
1674
+ if (cachedSize !== undefined) {
1675
+ return cachedSize;
1676
+ }
1677
+ const size = Math.max(
1678
+ 1,
1679
+ /** @type {Generator} */ (this.generator).getSize(this, type)
1680
+ );
1681
+ if (this._sourceSizes === undefined) {
1682
+ this._sourceSizes = new Map();
1683
+ }
1684
+ this._sourceSizes.set(type, size);
1685
+ return size;
1686
+ }
1687
+
1688
+ /**
1689
+ * @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
1690
+ * @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
1691
+ * @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
1692
+ * @param {FileSystemDependencies} buildDependencies set where build dependencies are added to
1693
+ */
1694
+ addCacheDependencies(
1695
+ fileDependencies,
1696
+ contextDependencies,
1697
+ missingDependencies,
1698
+ buildDependencies
1699
+ ) {
1700
+ const { snapshot, buildDependencies: buildDeps } =
1701
+ /** @type {BuildInfo} */ (this.buildInfo);
1702
+ if (snapshot) {
1703
+ fileDependencies.addAll(snapshot.getFileIterable());
1704
+ contextDependencies.addAll(snapshot.getContextIterable());
1705
+ missingDependencies.addAll(snapshot.getMissingIterable());
1706
+ } else {
1707
+ const {
1708
+ fileDependencies: fileDeps,
1709
+ contextDependencies: contextDeps,
1710
+ missingDependencies: missingDeps
1711
+ } = /** @type {BuildInfo} */ (this.buildInfo);
1712
+ if (fileDeps !== undefined) fileDependencies.addAll(fileDeps);
1713
+ if (contextDeps !== undefined) contextDependencies.addAll(contextDeps);
1714
+ if (missingDeps !== undefined) missingDependencies.addAll(missingDeps);
1715
+ }
1716
+ if (buildDeps !== undefined) {
1717
+ buildDependencies.addAll(buildDeps);
1718
+ }
1719
+ }
1720
+
1721
+ /**
1722
+ * @param {Hash} hash the hash used to track dependencies
1723
+ * @param {UpdateHashContext} context context
1724
+ * @returns {void}
1725
+ */
1726
+ updateHash(hash, context) {
1727
+ const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
1728
+ hash.update(
1729
+ /** @type {string} */
1730
+ (buildInfo.hash)
1731
+ );
1732
+ /** @type {Generator} */
1733
+ (this.generator).updateHash(hash, {
1734
+ module: this,
1735
+ ...context
1736
+ });
1737
+ super.updateHash(hash, context);
1738
+ }
1739
+
1740
+ /**
1741
+ * @param {ObjectSerializerContext} context context
1742
+ */
1743
+ serialize(context) {
1744
+ const { write } = context;
1745
+ // deserialize
1746
+ write(this._source);
1747
+ write(this.error);
1748
+ write(this._lastSuccessfulBuildMeta);
1749
+ write(this._forceBuild);
1750
+ write(this._codeGeneratorData);
1751
+ super.serialize(context);
1752
+ }
1753
+
1754
+ /**
1755
+ * @param {ObjectDeserializerContext} context context
1756
+ * @returns {NormalModule} module
1757
+ */
1758
+ static deserialize(context) {
1759
+ const obj = new NormalModule({
1760
+ // will be deserialized by Module
1761
+ layer: /** @type {EXPECTED_ANY} */ (null),
1762
+ type: "",
1763
+ // will be filled by updateCacheModule
1764
+ resource: "",
1765
+ context: "",
1766
+ request: /** @type {EXPECTED_ANY} */ (null),
1767
+ userRequest: /** @type {EXPECTED_ANY} */ (null),
1768
+ rawRequest: /** @type {EXPECTED_ANY} */ (null),
1769
+ loaders: /** @type {EXPECTED_ANY} */ (null),
1770
+ matchResource: /** @type {EXPECTED_ANY} */ (null),
1771
+ parser: /** @type {EXPECTED_ANY} */ (null),
1772
+ parserOptions: /** @type {EXPECTED_ANY} */ (null),
1773
+ generator: /** @type {EXPECTED_ANY} */ (null),
1774
+ generatorOptions: /** @type {EXPECTED_ANY} */ (null),
1775
+ resolveOptions: /** @type {EXPECTED_ANY} */ (null),
1776
+ extractSourceMap: /** @type {EXPECTED_ANY} */ (null)
1777
+ });
1778
+ obj.deserialize(context);
1779
+ return obj;
1780
+ }
1781
+
1782
+ /**
1783
+ * @param {ObjectDeserializerContext} context context
1784
+ */
1785
+ deserialize(context) {
1786
+ const { read } = context;
1787
+ this._source = read();
1788
+ this.error = read();
1789
+ this._lastSuccessfulBuildMeta = read();
1790
+ this._forceBuild = read();
1791
+ this._codeGeneratorData = read();
1792
+ super.deserialize(context);
1793
+ }
1794
+ }
1795
+
1796
+ makeSerializable(NormalModule, "webpack/lib/NormalModule");
1797
+
1798
+ module.exports = NormalModule;