@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,1455 @@
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 { getContext } = require("loader-runner");
9
+ const asyncLib = require("neo-async");
10
+ const {
11
+ AsyncSeriesBailHook,
12
+ HookMap,
13
+ SyncBailHook,
14
+ SyncHook,
15
+ SyncWaterfallHook
16
+ } = require("tapable");
17
+ const ChunkGraph = require("./ChunkGraph");
18
+ const Module = require("./Module");
19
+ const ModuleFactory = require("./ModuleFactory");
20
+ const ModuleGraph = require("./ModuleGraph");
21
+ const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
22
+ const NormalModule = require("./NormalModule");
23
+ const BasicEffectRulePlugin = require("./rules/BasicEffectRulePlugin");
24
+ const BasicMatcherRulePlugin = require("./rules/BasicMatcherRulePlugin");
25
+ const ObjectMatcherRulePlugin = require("./rules/ObjectMatcherRulePlugin");
26
+ const RuleSetCompiler = require("./rules/RuleSetCompiler");
27
+ const UseEffectRulePlugin = require("./rules/UseEffectRulePlugin");
28
+ const LazySet = require("./util/LazySet");
29
+ const { getScheme } = require("./util/URLAbsoluteSpecifier");
30
+ const { cachedCleverMerge, cachedSetProperty } = require("./util/cleverMerge");
31
+ const { join } = require("./util/fs");
32
+ const {
33
+ parseResource,
34
+ parseResourceWithoutFragment
35
+ } = require("./util/identifier");
36
+
37
+ /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
38
+ /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
39
+ /** @typedef {import("../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptions */
40
+ /** @typedef {import("../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
41
+ /** @typedef {import("./Compilation").FileSystemDependencies} FileSystemDependencies */
42
+ /** @typedef {import("./Generator")} Generator */
43
+ /** @typedef {import("./ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
44
+ /** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
45
+ /** @typedef {import("./ModuleFactory").ModuleFactoryCreateDataContextInfo} ModuleFactoryCreateDataContextInfo */
46
+ /** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
47
+ /** @typedef {import("./NormalModule").GeneratorOptions} GeneratorOptions */
48
+ /** @typedef {import("./NormalModule").LoaderItem} LoaderItem */
49
+ /** @typedef {import("./NormalModule").NormalModuleCreateData} NormalModuleCreateData */
50
+ /** @typedef {import("./NormalModule").ParserOptions} ParserOptions */
51
+ /** @typedef {import("./Parser")} Parser */
52
+ /** @typedef {import("./ResolverFactory")} ResolverFactory */
53
+ /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
54
+ /** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
55
+ /** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
56
+ /** @typedef {import("./rules/RuleSetCompiler").RuleSetRules} RuleSetRules */
57
+ /** @typedef {import("./rules/RuleSetCompiler").RuleSet} RuleSet */
58
+ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
59
+ /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
60
+
61
+ /**
62
+ * @template T
63
+ * @typedef {import("./Compiler").Callback<T>} Callback
64
+ */
65
+
66
+ /** @typedef {Pick<RuleSetRule, "type" | "sideEffects" | "parser" | "generator" | "resolve" | "layer" | "extractSourceMap">} ModuleSettings */
67
+ /** @typedef {Partial<NormalModuleCreateData & { settings: ModuleSettings }>} CreateData */
68
+
69
+ /**
70
+ * @typedef {object} ResolveData
71
+ * @property {ModuleFactoryCreateData["contextInfo"]} contextInfo
72
+ * @property {ModuleFactoryCreateData["resolveOptions"]} resolveOptions
73
+ * @property {string} context
74
+ * @property {string} request
75
+ * @property {ImportAttributes | undefined} attributes
76
+ * @property {ModuleDependency[]} dependencies
77
+ * @property {string} dependencyType
78
+ * @property {CreateData} createData
79
+ * @property {FileSystemDependencies} fileDependencies
80
+ * @property {FileSystemDependencies} missingDependencies
81
+ * @property {FileSystemDependencies} contextDependencies
82
+ * @property {Module=} ignoredModule
83
+ * @property {boolean} cacheable allow to use the unsafe cache
84
+ */
85
+
86
+ /**
87
+ * @typedef {object} ResourceData
88
+ * @property {string} resource
89
+ * @property {string=} path
90
+ * @property {string=} query
91
+ * @property {string=} fragment
92
+ * @property {string=} context
93
+ */
94
+
95
+ /**
96
+ * @typedef {object} ResourceSchemeData
97
+ * @property {string=} mimetype mime type of the resource
98
+ * @property {string=} parameters additional parameters for the resource
99
+ * @property {"base64" | false=} encoding encoding of the resource
100
+ * @property {string=} encodedContent encoded content of the resource
101
+ */
102
+
103
+ /** @typedef {ResourceData & { data: ResourceSchemeData & Partial<ResolveRequest> }} ResourceDataWithData */
104
+
105
+ /**
106
+ * @typedef {object} ParsedLoaderRequest
107
+ * @property {string} loader loader
108
+ * @property {string | undefined} options options
109
+ */
110
+
111
+ /** @typedef {import("./ModuleTypeConstants").JAVASCRIPT_MODULE_TYPE_AUTO} JAVASCRIPT_MODULE_TYPE_AUTO */
112
+ /** @typedef {import("./ModuleTypeConstants").JAVASCRIPT_MODULE_TYPE_DYNAMIC} JAVASCRIPT_MODULE_TYPE_DYNAMIC */
113
+ /** @typedef {import("./ModuleTypeConstants").JAVASCRIPT_MODULE_TYPE_ESM} JAVASCRIPT_MODULE_TYPE_ESM */
114
+ /** @typedef {import("./ModuleTypeConstants").JSON_MODULE_TYPE} JSON_MODULE_TYPE */
115
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE} ASSET_MODULE_TYPE */
116
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_INLINE} ASSET_MODULE_TYPE_INLINE */
117
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_RESOURCE} ASSET_MODULE_TYPE_RESOURCE */
118
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_SOURCE} ASSET_MODULE_TYPE_SOURCE */
119
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_BYTES} ASSET_MODULE_TYPE_BYTES */
120
+ /** @typedef {import("./ModuleTypeConstants").WEBASSEMBLY_MODULE_TYPE_ASYNC} WEBASSEMBLY_MODULE_TYPE_ASYNC */
121
+ /** @typedef {import("./ModuleTypeConstants").WEBASSEMBLY_MODULE_TYPE_SYNC} WEBASSEMBLY_MODULE_TYPE_SYNC */
122
+ /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE} CSS_MODULE_TYPE */
123
+ /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_GLOBAL} CSS_MODULE_TYPE_GLOBAL */
124
+ /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_MODULE} CSS_MODULE_TYPE_MODULE */
125
+ /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_AUTO} CSS_MODULE_TYPE_AUTO */
126
+
127
+ /** @typedef {JAVASCRIPT_MODULE_TYPE_AUTO | JAVASCRIPT_MODULE_TYPE_DYNAMIC | JAVASCRIPT_MODULE_TYPE_ESM | JSON_MODULE_TYPE | ASSET_MODULE_TYPE | ASSET_MODULE_TYPE_INLINE | ASSET_MODULE_TYPE_RESOURCE | ASSET_MODULE_TYPE_SOURCE | WEBASSEMBLY_MODULE_TYPE_ASYNC | WEBASSEMBLY_MODULE_TYPE_SYNC | CSS_MODULE_TYPE | CSS_MODULE_TYPE_GLOBAL | CSS_MODULE_TYPE_MODULE | CSS_MODULE_TYPE_AUTO} KnownNormalModuleTypes */
128
+ /** @typedef {KnownNormalModuleTypes | string} NormalModuleTypes */
129
+
130
+ const EMPTY_RESOLVE_OPTIONS = {};
131
+ /** @type {ParserOptions} */
132
+ const EMPTY_PARSER_OPTIONS = {};
133
+ /** @type {GeneratorOptions} */
134
+ const EMPTY_GENERATOR_OPTIONS = {};
135
+ /** @type {ParsedLoaderRequest[]} */
136
+ const EMPTY_ELEMENTS = [];
137
+
138
+ const MATCH_RESOURCE_REGEX = /^([^!]+)!=!/;
139
+ const LEADING_DOT_EXTENSION_REGEX = /^[^.]/;
140
+
141
+ /**
142
+ * @param {LoaderItem} data data
143
+ * @returns {string} ident
144
+ */
145
+ const loaderToIdent = (data) => {
146
+ if (!data.options) {
147
+ return data.loader;
148
+ }
149
+ if (typeof data.options === "string") {
150
+ return `${data.loader}?${data.options}`;
151
+ }
152
+ if (typeof data.options !== "object") {
153
+ throw new Error("loader options must be string or object");
154
+ }
155
+ if (data.ident) {
156
+ return `${data.loader}??${data.ident}`;
157
+ }
158
+ return `${data.loader}?${JSON.stringify(data.options)}`;
159
+ };
160
+
161
+ /**
162
+ * @param {LoaderItem[]} loaders loaders
163
+ * @param {string} resource resource
164
+ * @returns {string} stringified loaders and resource
165
+ */
166
+ const stringifyLoadersAndResource = (loaders, resource) => {
167
+ let str = "";
168
+ for (const loader of loaders) {
169
+ str += `${loaderToIdent(loader)}!`;
170
+ }
171
+ return str + resource;
172
+ };
173
+
174
+ /**
175
+ * @param {number} times times
176
+ * @param {(err?: null | Error) => void} callback callback
177
+ * @returns {(err?: null | Error) => void} callback
178
+ */
179
+ const needCalls = (times, callback) => (err) => {
180
+ if (--times === 0) {
181
+ return callback(err);
182
+ }
183
+ if (err && times > 0) {
184
+ times = Number.NaN;
185
+ return callback(err);
186
+ }
187
+ };
188
+
189
+ /**
190
+ * @template T
191
+ * @template O
192
+ * @param {T} globalOptions global options
193
+ * @param {string} type type
194
+ * @param {O} localOptions local options
195
+ * @returns {T & O | T | O} result
196
+ */
197
+ const mergeGlobalOptions = (globalOptions, type, localOptions) => {
198
+ const parts = type.split("/");
199
+ /** @type {undefined | T} */
200
+ let result;
201
+ let current = "";
202
+ for (const part of parts) {
203
+ current = current ? `${current}/${part}` : part;
204
+ const options =
205
+ /** @type {T} */
206
+ (globalOptions[/** @type {keyof T} */ (current)]);
207
+ if (typeof options === "object") {
208
+ result =
209
+ result === undefined ? options : cachedCleverMerge(result, options);
210
+ }
211
+ }
212
+ if (result === undefined) {
213
+ return localOptions;
214
+ }
215
+ return cachedCleverMerge(result, localOptions);
216
+ };
217
+
218
+ // TODO webpack 6 remove
219
+ /**
220
+ * @template {import("tapable").Hook<EXPECTED_ANY, EXPECTED_ANY>} T
221
+ * @param {string} name name
222
+ * @param {T} hook hook
223
+ * @returns {string} result
224
+ */
225
+ const deprecationChangedHookMessage = (name, hook) => {
226
+ const names = hook.taps.map((tapped) => tapped.name).join(", ");
227
+
228
+ return (
229
+ `NormalModuleFactory.${name} (${names}) is no longer a waterfall hook, but a bailing hook instead. ` +
230
+ "Do not return the passed object, but modify it instead. " +
231
+ "Returning false will ignore the request and results in no module created."
232
+ );
233
+ };
234
+
235
+ const ruleSetCompiler = new RuleSetCompiler([
236
+ new BasicMatcherRulePlugin("test", "resource"),
237
+ new BasicMatcherRulePlugin("scheme"),
238
+ new BasicMatcherRulePlugin("mimetype"),
239
+ new BasicMatcherRulePlugin("dependency"),
240
+ new BasicMatcherRulePlugin("include", "resource"),
241
+ new BasicMatcherRulePlugin("exclude", "resource", true),
242
+ new BasicMatcherRulePlugin("resource"),
243
+ new BasicMatcherRulePlugin("resourceQuery"),
244
+ new BasicMatcherRulePlugin("resourceFragment"),
245
+ new BasicMatcherRulePlugin("realResource"),
246
+ new BasicMatcherRulePlugin("issuer"),
247
+ new BasicMatcherRulePlugin("compiler"),
248
+ new BasicMatcherRulePlugin("issuerLayer"),
249
+ new ObjectMatcherRulePlugin("assert", "attributes", (value) => {
250
+ if (value) {
251
+ return (
252
+ /** @type {ImportAttributes} */ (value)._isLegacyAssert !== undefined
253
+ );
254
+ }
255
+
256
+ return false;
257
+ }),
258
+ new ObjectMatcherRulePlugin("with", "attributes", (value) => {
259
+ if (value) {
260
+ return !(/** @type {ImportAttributes} */ (value)._isLegacyAssert);
261
+ }
262
+ return false;
263
+ }),
264
+ new ObjectMatcherRulePlugin("descriptionData"),
265
+ new BasicEffectRulePlugin("type"),
266
+ new BasicEffectRulePlugin("sideEffects"),
267
+ new BasicEffectRulePlugin("parser"),
268
+ new BasicEffectRulePlugin("resolve"),
269
+ new BasicEffectRulePlugin("generator"),
270
+ new BasicEffectRulePlugin("layer"),
271
+ new BasicEffectRulePlugin("extractSourceMap"),
272
+ new UseEffectRulePlugin()
273
+ ]);
274
+
275
+ /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
276
+ /** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
277
+ /** @typedef {import("./javascript/JavascriptGenerator")} JavascriptGenerator */
278
+ /** @typedef {import("../declarations/WebpackOptions").EmptyGeneratorOptions} EmptyGeneratorOptions */
279
+
280
+ /** @typedef {import("./json/JsonParser")} JsonParser */
281
+ /** @typedef {import("../declarations/WebpackOptions").JsonParserOptions} JsonParserOptions */
282
+ /** @typedef {import("./json/JsonGenerator")} JsonGenerator */
283
+ /** @typedef {import("../declarations/WebpackOptions").JsonGeneratorOptions} JsonGeneratorOptions */
284
+
285
+ /** @typedef {import("./asset/AssetParser")} AssetParser */
286
+ /** @typedef {import("./asset/AssetSourceParser")} AssetSourceParser */
287
+ /** @typedef {import("./asset/AssetBytesParser")} AssetBytesParser */
288
+ /** @typedef {import("../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
289
+ /** @typedef {import("../declarations/WebpackOptions").EmptyParserOptions} EmptyParserOptions */
290
+ /** @typedef {import("./asset/AssetGenerator")} AssetGenerator */
291
+ /** @typedef {import("../declarations/WebpackOptions").AssetGeneratorOptions} AssetGeneratorOptions */
292
+ /** @typedef {import("../declarations/WebpackOptions").AssetInlineGeneratorOptions} AssetInlineGeneratorOptions */
293
+ /** @typedef {import("../declarations/WebpackOptions").AssetResourceGeneratorOptions} AssetResourceGeneratorOptions */
294
+ /** @typedef {import("./asset/AssetSourceGenerator")} AssetSourceGenerator */
295
+ /** @typedef {import("./asset/AssetBytesGenerator")} AssetBytesGenerator */
296
+
297
+ /** @typedef {import("./wasm-async/AsyncWebAssemblyParser")} AsyncWebAssemblyParser */
298
+ /** @typedef {import("./wasm-sync/WebAssemblyParser")} WebAssemblyParser */
299
+
300
+ /** @typedef {import("./css/CssParser")} CssParser */
301
+ /** @typedef {import("../declarations/WebpackOptions").CssParserOptions} CssParserOptions */
302
+ /** @typedef {import("../declarations/WebpackOptions").CssModuleParserOptions} CssModuleParserOptions */
303
+ /** @typedef {import("./css/CssGenerator")} CssGenerator */
304
+ /** @typedef {import("../declarations/WebpackOptions").CssGeneratorOptions} CssGeneratorOptions */
305
+ /** @typedef {import("../declarations/WebpackOptions").CssModuleGeneratorOptions} CssModuleGeneratorOptions */
306
+
307
+ /* eslint-disable jsdoc/type-formatting */
308
+ /**
309
+ * @typedef {[
310
+ * [JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
311
+ * [JAVASCRIPT_MODULE_TYPE_DYNAMIC, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
312
+ * [JAVASCRIPT_MODULE_TYPE_ESM, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
313
+ * [JSON_MODULE_TYPE, JsonParser, JsonParserOptions, JsonGenerator, JsonGeneratorOptions],
314
+ * [ASSET_MODULE_TYPE, AssetParser, AssetParserOptions, AssetGenerator, AssetGeneratorOptions],
315
+ * [ASSET_MODULE_TYPE_INLINE, AssetParser, EmptyParserOptions, AssetGenerator, AssetGeneratorOptions],
316
+ * [ASSET_MODULE_TYPE_RESOURCE, AssetParser, EmptyParserOptions, AssetGenerator, AssetGeneratorOptions],
317
+ * [ASSET_MODULE_TYPE_SOURCE, AssetSourceParser, EmptyParserOptions, AssetSourceGenerator, EmptyGeneratorOptions],
318
+ * [ASSET_MODULE_TYPE_BYTES, AssetBytesParser, EmptyParserOptions, AssetBytesGenerator, EmptyGeneratorOptions],
319
+ * [WEBASSEMBLY_MODULE_TYPE_ASYNC, AsyncWebAssemblyParser, EmptyParserOptions, Generator, EmptyParserOptions],
320
+ * [WEBASSEMBLY_MODULE_TYPE_SYNC, WebAssemblyParser, EmptyParserOptions, Generator, EmptyParserOptions],
321
+ * [CSS_MODULE_TYPE, CssParser, CssParserOptions, CssGenerator, CssGeneratorOptions],
322
+ * [CSS_MODULE_TYPE_AUTO, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
323
+ * [CSS_MODULE_TYPE_MODULE, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
324
+ * [CSS_MODULE_TYPE_GLOBAL, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
325
+ * [string, Parser, ParserOptions, Generator, GeneratorOptions],
326
+ * ]} ParsersAndGeneratorsByTypes
327
+ */
328
+ /* eslint-enable jsdoc/type-formatting */
329
+
330
+ /**
331
+ * @template {unknown[]} T
332
+ * @template {number[]} I
333
+ * @typedef {{ [K in keyof I]: K extends keyof I ? I[K] extends keyof T ? T[I[K]] : never : never }} ExtractTupleElements
334
+ */
335
+
336
+ /**
337
+ * @template {unknown[]} T
338
+ * @template {number[]} A
339
+ * @template [R=void]
340
+ * @typedef {T extends [infer Head extends [string, ...unknown[]], ...infer Tail extends [string, ...unknown[]][]] ? Record<Head[0], SyncBailHook<ExtractTupleElements<Head, A>, R extends number ? Head[R] : R>> & RecordFactoryFromTuple<Tail, A, R> : unknown } RecordFactoryFromTuple
341
+ */
342
+
343
+ class NormalModuleFactory extends ModuleFactory {
344
+ /**
345
+ * @param {object} param params
346
+ * @param {string=} param.context context
347
+ * @param {InputFileSystem} param.fs file system
348
+ * @param {ResolverFactory} param.resolverFactory resolverFactory
349
+ * @param {ModuleOptions} param.options options
350
+ * @param {AssociatedObjectForCache} param.associatedObjectForCache an object to which the cache will be attached
351
+ */
352
+ constructor({
353
+ context,
354
+ fs,
355
+ resolverFactory,
356
+ options,
357
+ associatedObjectForCache
358
+ }) {
359
+ super();
360
+ this.hooks = Object.freeze({
361
+ /** @type {AsyncSeriesBailHook<[ResolveData], Module | false | void>} */
362
+ resolve: new AsyncSeriesBailHook(["resolveData"]),
363
+ /** @type {HookMap<AsyncSeriesBailHook<[ResourceDataWithData, ResolveData], true | void>>} */
364
+ resolveForScheme: new HookMap(
365
+ () => new AsyncSeriesBailHook(["resourceData", "resolveData"])
366
+ ),
367
+ /** @type {HookMap<AsyncSeriesBailHook<[ResourceDataWithData, ResolveData], true | void>>} */
368
+ resolveInScheme: new HookMap(
369
+ () => new AsyncSeriesBailHook(["resourceData", "resolveData"])
370
+ ),
371
+ /** @type {AsyncSeriesBailHook<[ResolveData], Module | undefined>} */
372
+ factorize: new AsyncSeriesBailHook(["resolveData"]),
373
+ /** @type {AsyncSeriesBailHook<[ResolveData], false | void>} */
374
+ beforeResolve: new AsyncSeriesBailHook(["resolveData"]),
375
+ /** @type {AsyncSeriesBailHook<[ResolveData], false | void>} */
376
+ afterResolve: new AsyncSeriesBailHook(["resolveData"]),
377
+ /** @type {AsyncSeriesBailHook<[CreateData, ResolveData], Module | void>} */
378
+ createModule: new AsyncSeriesBailHook(["createData", "resolveData"]),
379
+ /** @type {SyncWaterfallHook<[Module, CreateData, ResolveData]>} */
380
+ module: new SyncWaterfallHook(["module", "createData", "resolveData"]),
381
+ /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [2], 1>>} */
382
+ createParser: new HookMap(() => new SyncBailHook(["parserOptions"])),
383
+ /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [1, 2]>>} */
384
+ parser: new HookMap(() => new SyncHook(["parser", "parserOptions"])),
385
+ /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [4], 3>>} */
386
+ createGenerator: new HookMap(
387
+ () => new SyncBailHook(["generatorOptions"])
388
+ ),
389
+ /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [3, 4]>>} */
390
+ generator: new HookMap(
391
+ () => new SyncHook(["generator", "generatorOptions"])
392
+ ),
393
+ /** @type {HookMap<SyncBailHook<[CreateData, ResolveData], Module | void>>} */
394
+ createModuleClass: new HookMap(
395
+ () => new SyncBailHook(["createData", "resolveData"])
396
+ )
397
+ });
398
+ /** @type {ResolverFactory} */
399
+ this.resolverFactory = resolverFactory;
400
+ /** @type {RuleSet} */
401
+ this.ruleSet = ruleSetCompiler.compile([
402
+ {
403
+ rules: /** @type {RuleSetRules} */ (options.defaultRules)
404
+ },
405
+ {
406
+ rules: /** @type {RuleSetRules} */ (options.rules)
407
+ }
408
+ ]);
409
+ /** @type {string} */
410
+ this.context = context || "";
411
+ /** @type {InputFileSystem} */
412
+ this.fs = fs;
413
+ this._globalParserOptions = options.parser;
414
+ this._globalGeneratorOptions = options.generator;
415
+ /** @type {Map<string, WeakMap<ParserOptions, Parser>>} */
416
+ this.parserCache = new Map();
417
+ /** @type {Map<string, WeakMap<GeneratorOptions, Generator>>} */
418
+ this.generatorCache = new Map();
419
+ /** @type {Set<Module>} */
420
+ this._restoredUnsafeCacheEntries = new Set();
421
+
422
+ /** @type {(resource: string) => import("./util/identifier").ParsedResource} */
423
+ const cacheParseResource = parseResource.bindCache(
424
+ associatedObjectForCache
425
+ );
426
+ const cachedParseResourceWithoutFragment =
427
+ parseResourceWithoutFragment.bindCache(associatedObjectForCache);
428
+ this._parseResourceWithoutFragment = cachedParseResourceWithoutFragment;
429
+
430
+ this.hooks.factorize.tapAsync(
431
+ {
432
+ name: "NormalModuleFactory",
433
+ stage: 100
434
+ },
435
+ (resolveData, callback) => {
436
+ this.hooks.resolve.callAsync(resolveData, (err, result) => {
437
+ if (err) return callback(err);
438
+
439
+ // Ignored
440
+ if (result === false) return callback();
441
+
442
+ // direct module
443
+ if (result instanceof Module) return callback(null, result);
444
+
445
+ if (typeof result === "object") {
446
+ throw new Error(
447
+ `${deprecationChangedHookMessage(
448
+ "resolve",
449
+ this.hooks.resolve
450
+ )} Returning a Module object will result in this module used as result.`
451
+ );
452
+ }
453
+
454
+ this.hooks.afterResolve.callAsync(resolveData, (err, result) => {
455
+ if (err) return callback(err);
456
+
457
+ if (typeof result === "object") {
458
+ throw new Error(
459
+ deprecationChangedHookMessage(
460
+ "afterResolve",
461
+ this.hooks.afterResolve
462
+ )
463
+ );
464
+ }
465
+
466
+ // Ignored
467
+ if (result === false) return callback();
468
+
469
+ const createData = resolveData.createData;
470
+
471
+ this.hooks.createModule.callAsync(
472
+ createData,
473
+ resolveData,
474
+ (err, createdModule) => {
475
+ if (!createdModule) {
476
+ if (!resolveData.request) {
477
+ return callback(new Error("Empty dependency (no request)"));
478
+ }
479
+
480
+ // TODO webpack 6 make it required and move javascript/wasm/asset properties to own module
481
+ createdModule = this.hooks.createModuleClass
482
+ .for(
483
+ /** @type {ModuleSettings} */
484
+ (createData.settings).type
485
+ )
486
+ .call(createData, resolveData);
487
+
488
+ if (!createdModule) {
489
+ createdModule = /** @type {Module} */ (
490
+ new NormalModule(
491
+ /** @type {NormalModuleCreateData} */
492
+ (createData)
493
+ )
494
+ );
495
+ }
496
+ }
497
+
498
+ createdModule = this.hooks.module.call(
499
+ createdModule,
500
+ createData,
501
+ resolveData
502
+ );
503
+
504
+ return callback(null, createdModule);
505
+ }
506
+ );
507
+ });
508
+ });
509
+ }
510
+ );
511
+ this.hooks.resolve.tapAsync(
512
+ {
513
+ name: "NormalModuleFactory",
514
+ stage: 100
515
+ },
516
+ (data, callback) => {
517
+ const {
518
+ contextInfo,
519
+ context,
520
+ dependencies,
521
+ dependencyType,
522
+ request,
523
+ attributes,
524
+ resolveOptions,
525
+ fileDependencies,
526
+ missingDependencies,
527
+ contextDependencies
528
+ } = data;
529
+ const loaderResolver = this.getResolver("loader");
530
+
531
+ /** @type {ResourceData | undefined} */
532
+ let matchResourceData;
533
+ /** @type {string} */
534
+ let unresolvedResource;
535
+ /** @type {ParsedLoaderRequest[]} */
536
+ let elements;
537
+ let noPreAutoLoaders = false;
538
+ let noAutoLoaders = false;
539
+ let noPrePostAutoLoaders = false;
540
+
541
+ const contextScheme = getScheme(context);
542
+ /** @type {string | undefined} */
543
+ let scheme = getScheme(request);
544
+
545
+ if (!scheme) {
546
+ /** @type {string} */
547
+ let requestWithoutMatchResource = request;
548
+ const matchResourceMatch = MATCH_RESOURCE_REGEX.exec(request);
549
+ if (matchResourceMatch) {
550
+ let matchResource = matchResourceMatch[1];
551
+ // Check if matchResource starts with ./ or ../
552
+ if (matchResource.charCodeAt(0) === 46) {
553
+ // 46 is "."
554
+ const secondChar = matchResource.charCodeAt(1);
555
+ if (
556
+ secondChar === 47 || // 47 is "/"
557
+ (secondChar === 46 && matchResource.charCodeAt(2) === 47) // "../"
558
+ ) {
559
+ // Resolve relative path against context
560
+ matchResource = join(this.fs, context, matchResource);
561
+ }
562
+ }
563
+
564
+ matchResourceData = {
565
+ ...cacheParseResource(matchResource),
566
+ resource: matchResource
567
+ };
568
+ requestWithoutMatchResource = request.slice(
569
+ matchResourceMatch[0].length
570
+ );
571
+ }
572
+
573
+ scheme = getScheme(requestWithoutMatchResource);
574
+
575
+ if (!scheme && !contextScheme) {
576
+ const firstChar = requestWithoutMatchResource.charCodeAt(0);
577
+ const secondChar = requestWithoutMatchResource.charCodeAt(1);
578
+ noPreAutoLoaders = firstChar === 45 && secondChar === 33; // startsWith "-!"
579
+ noAutoLoaders = noPreAutoLoaders || firstChar === 33; // startsWith "!"
580
+ noPrePostAutoLoaders = firstChar === 33 && secondChar === 33; // startsWith "!!";
581
+ const rawElements = requestWithoutMatchResource
582
+ .slice(
583
+ noPreAutoLoaders || noPrePostAutoLoaders
584
+ ? 2
585
+ : noAutoLoaders
586
+ ? 1
587
+ : 0
588
+ )
589
+ .split(/!+/);
590
+ unresolvedResource = /** @type {string} */ (rawElements.pop());
591
+ elements = rawElements.map((el) => {
592
+ const { path, query } = cachedParseResourceWithoutFragment(el);
593
+ return {
594
+ loader: path,
595
+ options: query ? query.slice(1) : undefined
596
+ };
597
+ });
598
+ scheme = getScheme(unresolvedResource);
599
+ } else {
600
+ unresolvedResource = requestWithoutMatchResource;
601
+ elements = EMPTY_ELEMENTS;
602
+ }
603
+ } else {
604
+ unresolvedResource = request;
605
+ elements = EMPTY_ELEMENTS;
606
+ }
607
+
608
+ /** @type {ResolveContext} */
609
+ const resolveContext = {
610
+ fileDependencies,
611
+ missingDependencies,
612
+ contextDependencies
613
+ };
614
+
615
+ /** @type {ResourceDataWithData} */
616
+ let resourceData;
617
+
618
+ /** @type {undefined | LoaderItem[]} */
619
+ let loaders;
620
+
621
+ const continueCallback = needCalls(2, (err) => {
622
+ if (err) return callback(err);
623
+
624
+ // translate option idents
625
+ try {
626
+ for (const item of /** @type {LoaderItem[]} */ (loaders)) {
627
+ if (typeof item.options === "string" && item.options[0] === "?") {
628
+ const ident = item.options.slice(1);
629
+ if (ident === "[[missing ident]]") {
630
+ throw new Error(
631
+ "No ident is provided by referenced loader. " +
632
+ "When using a function for Rule.use in config you need to " +
633
+ "provide an 'ident' property for referenced loader options."
634
+ );
635
+ }
636
+ item.options = this.ruleSet.references.get(ident);
637
+ if (item.options === undefined) {
638
+ throw new Error(
639
+ "Invalid ident is provided by referenced loader"
640
+ );
641
+ }
642
+ item.ident = ident;
643
+ }
644
+ }
645
+ } catch (identErr) {
646
+ return callback(/** @type {Error} */ (identErr));
647
+ }
648
+
649
+ if (!resourceData) {
650
+ // ignored
651
+ return callback(null, dependencies[0].createIgnoredModule(context));
652
+ }
653
+
654
+ const userRequest =
655
+ (matchResourceData !== undefined
656
+ ? `${matchResourceData.resource}!=!`
657
+ : "") +
658
+ stringifyLoadersAndResource(
659
+ /** @type {LoaderItem[]} */ (loaders),
660
+ resourceData.resource
661
+ );
662
+
663
+ /** @type {ModuleSettings} */
664
+ const settings = {};
665
+ /** @type {LoaderItem[]} */
666
+ const useLoadersPost = [];
667
+ /** @type {LoaderItem[]} */
668
+ const useLoaders = [];
669
+ /** @type {LoaderItem[]} */
670
+ const useLoadersPre = [];
671
+
672
+ // handle .webpack[] suffix
673
+ /** @type {string} */
674
+ let resource;
675
+ /** @type {RegExpExecArray | null} */
676
+ let match;
677
+ if (
678
+ matchResourceData &&
679
+ typeof (resource = matchResourceData.resource) === "string" &&
680
+ (match = /\.webpack\[([^\]]+)\]$/.exec(resource))
681
+ ) {
682
+ settings.type = match[1];
683
+ matchResourceData.resource = matchResourceData.resource.slice(
684
+ 0,
685
+ -settings.type.length - 10
686
+ );
687
+ } else {
688
+ settings.type = JAVASCRIPT_MODULE_TYPE_AUTO;
689
+ const resourceDataForRules = matchResourceData || resourceData;
690
+ const result = this.ruleSet.exec({
691
+ resource: resourceDataForRules.path,
692
+ realResource: resourceData.path,
693
+ resourceQuery: resourceDataForRules.query,
694
+ resourceFragment: resourceDataForRules.fragment,
695
+ scheme,
696
+ attributes,
697
+ mimetype: matchResourceData
698
+ ? ""
699
+ : resourceData.data.mimetype || "",
700
+ dependency: dependencyType,
701
+ descriptionData: matchResourceData
702
+ ? undefined
703
+ : resourceData.data.descriptionFileData,
704
+ issuer: contextInfo.issuer,
705
+ compiler: contextInfo.compiler,
706
+ issuerLayer: contextInfo.issuerLayer || ""
707
+ });
708
+ for (const r of result) {
709
+ // https://github.com/webpack/webpack/issues/16466
710
+ // if a request exists PrePostAutoLoaders, should disable modifying Rule.type
711
+ if (r.type === "type" && noPrePostAutoLoaders) {
712
+ continue;
713
+ }
714
+ if (r.type === "use") {
715
+ if (!noAutoLoaders && !noPrePostAutoLoaders) {
716
+ useLoaders.push(r.value);
717
+ }
718
+ } else if (r.type === "use-post") {
719
+ if (!noPrePostAutoLoaders) {
720
+ useLoadersPost.push(r.value);
721
+ }
722
+ } else if (r.type === "use-pre") {
723
+ if (!noPreAutoLoaders && !noPrePostAutoLoaders) {
724
+ useLoadersPre.push(r.value);
725
+ }
726
+ } else if (
727
+ typeof r.value === "object" &&
728
+ r.value !== null &&
729
+ typeof settings[
730
+ /** @type {keyof ModuleSettings} */
731
+ (r.type)
732
+ ] === "object" &&
733
+ settings[/** @type {keyof ModuleSettings} */ (r.type)] !== null
734
+ ) {
735
+ const type = /** @type {keyof ModuleSettings} */ (r.type);
736
+ settings[type] = cachedCleverMerge(settings[type], r.value);
737
+ } else {
738
+ const type = /** @type {keyof ModuleSettings} */ (r.type);
739
+ settings[type] = r.value;
740
+ }
741
+ }
742
+ }
743
+
744
+ /** @type {undefined | LoaderItem[]} */
745
+ let postLoaders;
746
+ /** @type {undefined | LoaderItem[]} */
747
+ let normalLoaders;
748
+ /** @type {undefined | LoaderItem[]} */
749
+ let preLoaders;
750
+
751
+ const continueCallback = needCalls(3, (err) => {
752
+ if (err) {
753
+ return callback(err);
754
+ }
755
+ const allLoaders = /** @type {LoaderItem[]} */ (postLoaders);
756
+ if (matchResourceData === undefined) {
757
+ for (const loader of /** @type {LoaderItem[]} */ (loaders)) {
758
+ allLoaders.push(loader);
759
+ }
760
+ for (const loader of /** @type {LoaderItem[]} */ (
761
+ normalLoaders
762
+ )) {
763
+ allLoaders.push(loader);
764
+ }
765
+ } else {
766
+ for (const loader of /** @type {LoaderItem[]} */ (
767
+ normalLoaders
768
+ )) {
769
+ allLoaders.push(loader);
770
+ }
771
+ for (const loader of /** @type {LoaderItem[]} */ (loaders)) {
772
+ allLoaders.push(loader);
773
+ }
774
+ }
775
+ for (const loader of /** @type {LoaderItem[]} */ (preLoaders)) {
776
+ allLoaders.push(loader);
777
+ }
778
+ const type = /** @type {NormalModuleTypes} */ (settings.type);
779
+ const resolveOptions = settings.resolve;
780
+ const layer = settings.layer;
781
+
782
+ try {
783
+ Object.assign(data.createData, {
784
+ layer:
785
+ layer === undefined ? contextInfo.issuerLayer || null : layer,
786
+ request: stringifyLoadersAndResource(
787
+ allLoaders,
788
+ resourceData.resource
789
+ ),
790
+ userRequest,
791
+ rawRequest: request,
792
+ loaders: allLoaders,
793
+ resource: resourceData.resource,
794
+ context:
795
+ resourceData.context || getContext(resourceData.resource),
796
+ matchResource: matchResourceData
797
+ ? matchResourceData.resource
798
+ : undefined,
799
+ resourceResolveData: resourceData.data,
800
+ settings,
801
+ type,
802
+ parser: this.getParser(type, settings.parser),
803
+ parserOptions: settings.parser,
804
+ generator: this.getGenerator(type, settings.generator),
805
+ generatorOptions: settings.generator,
806
+ resolveOptions,
807
+ extractSourceMap: settings.extractSourceMap || false
808
+ });
809
+ } catch (createDataErr) {
810
+ return callback(/** @type {Error} */ (createDataErr));
811
+ }
812
+ callback();
813
+ });
814
+ this.resolveRequestArray(
815
+ contextInfo,
816
+ this.context,
817
+ useLoadersPost,
818
+ loaderResolver,
819
+ resolveContext,
820
+ (err, result) => {
821
+ postLoaders = result;
822
+ continueCallback(err);
823
+ }
824
+ );
825
+ this.resolveRequestArray(
826
+ contextInfo,
827
+ this.context,
828
+ useLoaders,
829
+ loaderResolver,
830
+ resolveContext,
831
+ (err, result) => {
832
+ normalLoaders = result;
833
+ continueCallback(err);
834
+ }
835
+ );
836
+ this.resolveRequestArray(
837
+ contextInfo,
838
+ this.context,
839
+ useLoadersPre,
840
+ loaderResolver,
841
+ resolveContext,
842
+ (err, result) => {
843
+ preLoaders = result;
844
+ continueCallback(err);
845
+ }
846
+ );
847
+ });
848
+
849
+ this.resolveRequestArray(
850
+ contextInfo,
851
+ contextScheme ? this.context : context,
852
+ /** @type {LoaderItem[]} */ (elements),
853
+ loaderResolver,
854
+ resolveContext,
855
+ (err, result) => {
856
+ if (err) return continueCallback(err);
857
+ loaders = result;
858
+ continueCallback();
859
+ }
860
+ );
861
+
862
+ /**
863
+ * @param {string} context context
864
+ */
865
+ const defaultResolve = (context) => {
866
+ if (/^(?:$|\?)/.test(unresolvedResource)) {
867
+ resourceData = {
868
+ ...cacheParseResource(unresolvedResource),
869
+ resource: unresolvedResource,
870
+ data: {}
871
+ };
872
+ continueCallback();
873
+ }
874
+
875
+ // resource without scheme and with path
876
+ else {
877
+ const normalResolver = this.getResolver(
878
+ "normal",
879
+ dependencyType
880
+ ? cachedSetProperty(
881
+ resolveOptions || EMPTY_RESOLVE_OPTIONS,
882
+ "dependencyType",
883
+ dependencyType
884
+ )
885
+ : resolveOptions
886
+ );
887
+ this.resolveResource(
888
+ contextInfo,
889
+ context,
890
+ unresolvedResource,
891
+ normalResolver,
892
+ resolveContext,
893
+ (err, _resolvedResource, resolvedResourceResolveData) => {
894
+ if (err) return continueCallback(err);
895
+ if (_resolvedResource !== false) {
896
+ const resolvedResource =
897
+ /** @type {string} */
898
+ (_resolvedResource);
899
+ resourceData = {
900
+ ...cacheParseResource(resolvedResource),
901
+ resource: resolvedResource,
902
+ data:
903
+ /** @type {ResolveRequest} */
904
+ (resolvedResourceResolveData)
905
+ };
906
+ }
907
+ continueCallback();
908
+ }
909
+ );
910
+ }
911
+ };
912
+
913
+ // resource with scheme
914
+ if (scheme) {
915
+ resourceData = {
916
+ resource: unresolvedResource,
917
+ data: {},
918
+ path: undefined,
919
+ query: undefined,
920
+ fragment: undefined,
921
+ context: undefined
922
+ };
923
+ this.hooks.resolveForScheme
924
+ .for(scheme)
925
+ .callAsync(resourceData, data, (err) => {
926
+ if (err) return continueCallback(err);
927
+ continueCallback();
928
+ });
929
+ }
930
+
931
+ // resource within scheme
932
+ else if (contextScheme) {
933
+ resourceData = {
934
+ resource: unresolvedResource,
935
+ data: {},
936
+ path: undefined,
937
+ query: undefined,
938
+ fragment: undefined,
939
+ context: undefined
940
+ };
941
+ this.hooks.resolveInScheme
942
+ .for(contextScheme)
943
+ .callAsync(resourceData, data, (err, handled) => {
944
+ if (err) return continueCallback(err);
945
+ if (!handled) return defaultResolve(this.context);
946
+ continueCallback();
947
+ });
948
+ }
949
+
950
+ // resource without scheme and without path
951
+ else {
952
+ defaultResolve(context);
953
+ }
954
+ }
955
+ );
956
+ }
957
+
958
+ cleanupForCache() {
959
+ for (const module of this._restoredUnsafeCacheEntries) {
960
+ ChunkGraph.clearChunkGraphForModule(module);
961
+ ModuleGraph.clearModuleGraphForModule(module);
962
+ module.cleanupForCache();
963
+ }
964
+ }
965
+
966
+ /**
967
+ * @param {ModuleFactoryCreateData} data data object
968
+ * @param {ModuleFactoryCallback} callback callback
969
+ * @returns {void}
970
+ */
971
+ create(data, callback) {
972
+ const dependencies = /** @type {ModuleDependency[]} */ (data.dependencies);
973
+ const context = data.context || this.context;
974
+ const resolveOptions = data.resolveOptions || EMPTY_RESOLVE_OPTIONS;
975
+ const dependency = dependencies[0];
976
+ const request = dependency.request;
977
+ const attributes =
978
+ /** @type {ModuleDependency & { attributes: ImportAttributes }} */
979
+ (dependency).attributes;
980
+ const dependencyType = dependency.category || "";
981
+ const contextInfo = data.contextInfo;
982
+ /** @type {FileSystemDependencies} */
983
+ const fileDependencies = new LazySet();
984
+ /** @type {FileSystemDependencies} */
985
+ const missingDependencies = new LazySet();
986
+ /** @type {FileSystemDependencies} */
987
+ const contextDependencies = new LazySet();
988
+ /** @type {ResolveData} */
989
+ const resolveData = {
990
+ contextInfo,
991
+ resolveOptions,
992
+ context,
993
+ request,
994
+ attributes,
995
+ dependencies,
996
+ dependencyType,
997
+ fileDependencies,
998
+ missingDependencies,
999
+ contextDependencies,
1000
+ createData: {},
1001
+ cacheable: true
1002
+ };
1003
+ this.hooks.beforeResolve.callAsync(resolveData, (err, result) => {
1004
+ if (err) {
1005
+ return callback(err, {
1006
+ fileDependencies,
1007
+ missingDependencies,
1008
+ contextDependencies,
1009
+ cacheable: false
1010
+ });
1011
+ }
1012
+
1013
+ // Ignored
1014
+ if (result === false) {
1015
+ /** @type {ModuleFactoryResult} * */
1016
+ const factoryResult = {
1017
+ fileDependencies,
1018
+ missingDependencies,
1019
+ contextDependencies,
1020
+ cacheable: resolveData.cacheable
1021
+ };
1022
+
1023
+ if (resolveData.ignoredModule) {
1024
+ factoryResult.module = resolveData.ignoredModule;
1025
+ }
1026
+
1027
+ return callback(null, factoryResult);
1028
+ }
1029
+
1030
+ if (typeof result === "object") {
1031
+ throw new Error(
1032
+ deprecationChangedHookMessage(
1033
+ "beforeResolve",
1034
+ this.hooks.beforeResolve
1035
+ )
1036
+ );
1037
+ }
1038
+
1039
+ this.hooks.factorize.callAsync(resolveData, (err, module) => {
1040
+ if (err) {
1041
+ return callback(err, {
1042
+ fileDependencies,
1043
+ missingDependencies,
1044
+ contextDependencies,
1045
+ cacheable: false
1046
+ });
1047
+ }
1048
+
1049
+ /** @type {ModuleFactoryResult} * */
1050
+ const factoryResult = {
1051
+ module,
1052
+ fileDependencies,
1053
+ missingDependencies,
1054
+ contextDependencies,
1055
+ cacheable: resolveData.cacheable
1056
+ };
1057
+
1058
+ callback(null, factoryResult);
1059
+ });
1060
+ });
1061
+ }
1062
+
1063
+ /**
1064
+ * @param {ModuleFactoryCreateDataContextInfo} contextInfo context info
1065
+ * @param {string} context context
1066
+ * @param {string} unresolvedResource unresolved resource
1067
+ * @param {ResolverWithOptions} resolver resolver
1068
+ * @param {ResolveContext} resolveContext resolver context
1069
+ * @param {(err: null | Error, res?: string | false, req?: ResolveRequest) => void} callback callback
1070
+ */
1071
+ resolveResource(
1072
+ contextInfo,
1073
+ context,
1074
+ unresolvedResource,
1075
+ resolver,
1076
+ resolveContext,
1077
+ callback
1078
+ ) {
1079
+ resolver.resolve(
1080
+ contextInfo,
1081
+ context,
1082
+ unresolvedResource,
1083
+ resolveContext,
1084
+ (err, resolvedResource, resolvedResourceResolveData) => {
1085
+ if (err) {
1086
+ return this._resolveResourceErrorHints(
1087
+ err,
1088
+ contextInfo,
1089
+ context,
1090
+ unresolvedResource,
1091
+ resolver,
1092
+ resolveContext,
1093
+ (err2, hints) => {
1094
+ if (err2) {
1095
+ err.message += `
1096
+ A fatal error happened during resolving additional hints for this error: ${err2.message}`;
1097
+ err.stack += `
1098
+
1099
+ A fatal error happened during resolving additional hints for this error:
1100
+ ${err2.stack}`;
1101
+ return callback(err);
1102
+ }
1103
+ if (hints && hints.length > 0) {
1104
+ err.message += `
1105
+ ${hints.join("\n\n")}`;
1106
+ }
1107
+
1108
+ // Check if the extension is missing a leading dot (e.g. "js" instead of ".js")
1109
+ let appendResolveExtensionsHint = false;
1110
+ const specifiedExtensions = [...resolver.options.extensions];
1111
+ const expectedExtensions = specifiedExtensions.map(
1112
+ (extension) => {
1113
+ if (LEADING_DOT_EXTENSION_REGEX.test(extension)) {
1114
+ appendResolveExtensionsHint = true;
1115
+ return `.${extension}`;
1116
+ }
1117
+ return extension;
1118
+ }
1119
+ );
1120
+ if (appendResolveExtensionsHint) {
1121
+ err.message += `\nDid you miss the leading dot in 'resolve.extensions'? Did you mean '${JSON.stringify(
1122
+ expectedExtensions
1123
+ )}' instead of '${JSON.stringify(specifiedExtensions)}'?`;
1124
+ }
1125
+
1126
+ callback(err);
1127
+ }
1128
+ );
1129
+ }
1130
+ callback(err, resolvedResource, resolvedResourceResolveData);
1131
+ }
1132
+ );
1133
+ }
1134
+
1135
+ /**
1136
+ * @param {Error} error error
1137
+ * @param {ModuleFactoryCreateDataContextInfo} contextInfo context info
1138
+ * @param {string} context context
1139
+ * @param {string} unresolvedResource unresolved resource
1140
+ * @param {ResolverWithOptions} resolver resolver
1141
+ * @param {ResolveContext} resolveContext resolver context
1142
+ * @param {Callback<string[]>} callback callback
1143
+ * @private
1144
+ */
1145
+ _resolveResourceErrorHints(
1146
+ error,
1147
+ contextInfo,
1148
+ context,
1149
+ unresolvedResource,
1150
+ resolver,
1151
+ resolveContext,
1152
+ callback
1153
+ ) {
1154
+ asyncLib.parallel(
1155
+ [
1156
+ (callback) => {
1157
+ if (!resolver.options.fullySpecified) return callback();
1158
+ resolver
1159
+ .withOptions({
1160
+ fullySpecified: false
1161
+ })
1162
+ .resolve(
1163
+ contextInfo,
1164
+ context,
1165
+ unresolvedResource,
1166
+ resolveContext,
1167
+ (err, resolvedResource) => {
1168
+ if (!err && resolvedResource) {
1169
+ const resource = parseResource(resolvedResource).path.replace(
1170
+ /^.*[\\/]/,
1171
+ ""
1172
+ );
1173
+ return callback(
1174
+ null,
1175
+ `Did you mean '${resource}'?
1176
+ BREAKING CHANGE: The request '${unresolvedResource}' failed to resolve only because it was resolved as fully specified
1177
+ (probably because the origin is strict EcmaScript Module, e. g. a module with javascript mimetype, a '*.mjs' file, or a '*.js' file where the package.json contains '"type": "module"').
1178
+ The extension in the request is mandatory for it to be fully specified.
1179
+ Add the extension to the request.`
1180
+ );
1181
+ }
1182
+ callback();
1183
+ }
1184
+ );
1185
+ },
1186
+ (callback) => {
1187
+ if (!resolver.options.enforceExtension) return callback();
1188
+ resolver
1189
+ .withOptions({
1190
+ enforceExtension: false,
1191
+ extensions: []
1192
+ })
1193
+ .resolve(
1194
+ contextInfo,
1195
+ context,
1196
+ unresolvedResource,
1197
+ resolveContext,
1198
+ (err, resolvedResource) => {
1199
+ if (!err && resolvedResource) {
1200
+ let hint = "";
1201
+ const match = /\.[^.]+(?:\?|$)/.exec(unresolvedResource);
1202
+ if (match) {
1203
+ const fixedRequest = unresolvedResource.replace(
1204
+ /(\.[^.]+)(\?|$)/,
1205
+ "$2"
1206
+ );
1207
+ hint = resolver.options.extensions.has(match[1])
1208
+ ? `Did you mean '${fixedRequest}'?`
1209
+ : `Did you mean '${fixedRequest}'? Also note that '${match[1]}' is not in 'resolve.extensions' yet and need to be added for this to work?`;
1210
+ } else {
1211
+ hint =
1212
+ "Did you mean to omit the extension or to remove 'resolve.enforceExtension'?";
1213
+ }
1214
+ return callback(
1215
+ null,
1216
+ `The request '${unresolvedResource}' failed to resolve only because 'resolve.enforceExtension' was specified.
1217
+ ${hint}
1218
+ Including the extension in the request is no longer possible. Did you mean to enforce including the extension in requests with 'resolve.extensions: []' instead?`
1219
+ );
1220
+ }
1221
+ callback();
1222
+ }
1223
+ );
1224
+ },
1225
+ (callback) => {
1226
+ if (
1227
+ /^\.\.?\//.test(unresolvedResource) ||
1228
+ resolver.options.preferRelative
1229
+ ) {
1230
+ return callback();
1231
+ }
1232
+ resolver.resolve(
1233
+ contextInfo,
1234
+ context,
1235
+ `./${unresolvedResource}`,
1236
+ resolveContext,
1237
+ (err, resolvedResource) => {
1238
+ if (err || !resolvedResource) return callback();
1239
+ const moduleDirectories = resolver.options.modules
1240
+ .map((m) => (Array.isArray(m) ? m.join(", ") : m))
1241
+ .join(", ");
1242
+ callback(
1243
+ null,
1244
+ `Did you mean './${unresolvedResource}'?
1245
+ Requests that should resolve in the current directory need to start with './'.
1246
+ Requests that start with a name are treated as module requests and resolve within module directories (${moduleDirectories}).
1247
+ If changing the source code is not an option there is also a resolve options called 'preferRelative' which tries to resolve these kind of requests in the current directory too.`
1248
+ );
1249
+ }
1250
+ );
1251
+ }
1252
+ ],
1253
+ (err, hints) => {
1254
+ if (err) return callback(err);
1255
+ callback(null, /** @type {string[]} */ (hints).filter(Boolean));
1256
+ }
1257
+ );
1258
+ }
1259
+
1260
+ /**
1261
+ * @param {ModuleFactoryCreateDataContextInfo} contextInfo context info
1262
+ * @param {string} context context
1263
+ * @param {LoaderItem[]} array array
1264
+ * @param {ResolverWithOptions} resolver resolver
1265
+ * @param {ResolveContext} resolveContext resolve context
1266
+ * @param {Callback<LoaderItem[]>} callback callback
1267
+ * @returns {void} result
1268
+ */
1269
+ resolveRequestArray(
1270
+ contextInfo,
1271
+ context,
1272
+ array,
1273
+ resolver,
1274
+ resolveContext,
1275
+ callback
1276
+ ) {
1277
+ // LoaderItem
1278
+ if (array.length === 0) return callback(null, array);
1279
+ asyncLib.map(
1280
+ array,
1281
+ /**
1282
+ * @param {LoaderItem} item item
1283
+ * @param {Callback<LoaderItem>} callback callback
1284
+ */
1285
+ (item, callback) => {
1286
+ resolver.resolve(
1287
+ contextInfo,
1288
+ context,
1289
+ item.loader,
1290
+ resolveContext,
1291
+ (err, result, resolveRequest) => {
1292
+ if (
1293
+ err &&
1294
+ /^[^/]*$/.test(item.loader) &&
1295
+ !item.loader.endsWith("-loader")
1296
+ ) {
1297
+ return resolver.resolve(
1298
+ contextInfo,
1299
+ context,
1300
+ `${item.loader}-loader`,
1301
+ resolveContext,
1302
+ (err2) => {
1303
+ if (!err2) {
1304
+ err.message =
1305
+ `${err.message}\n` +
1306
+ "BREAKING CHANGE: It's no longer allowed to omit the '-loader' suffix when using loaders.\n" +
1307
+ ` You need to specify '${item.loader}-loader' instead of '${item.loader}',\n` +
1308
+ " see https://webpack.js.org/migrate/3/#automatic-loader-module-name-extension-removed";
1309
+ }
1310
+ callback(err);
1311
+ }
1312
+ );
1313
+ }
1314
+ if (err) return callback(err);
1315
+
1316
+ const parsedResult = this._parseResourceWithoutFragment(
1317
+ /** @type {string} */
1318
+ (result)
1319
+ );
1320
+
1321
+ const type = /\.mjs$/i.test(parsedResult.path)
1322
+ ? "module"
1323
+ : /\.cjs$/i.test(parsedResult.path)
1324
+ ? "commonjs"
1325
+ : /** @type {ResolveRequest} */
1326
+ (resolveRequest).descriptionFileData === undefined
1327
+ ? undefined
1328
+ : /** @type {string} */
1329
+ (
1330
+ /** @type {ResolveRequest} */
1331
+ (resolveRequest).descriptionFileData.type
1332
+ );
1333
+ /** @type {LoaderItem} */
1334
+ const resolved = {
1335
+ loader: parsedResult.path,
1336
+ type,
1337
+ options:
1338
+ item.options === undefined
1339
+ ? parsedResult.query
1340
+ ? parsedResult.query.slice(1)
1341
+ : undefined
1342
+ : item.options,
1343
+ ident: item.options === undefined ? undefined : item.ident
1344
+ };
1345
+
1346
+ return callback(null, resolved);
1347
+ }
1348
+ );
1349
+ },
1350
+ (err, value) => {
1351
+ callback(
1352
+ /** @type {Error | null} */ (err),
1353
+ /** @type {(LoaderItem)[]} */ (value)
1354
+ );
1355
+ }
1356
+ );
1357
+ }
1358
+
1359
+ /**
1360
+ * @param {string} type type
1361
+ * @param {ParserOptions} parserOptions parser options
1362
+ * @returns {Parser} parser
1363
+ */
1364
+ getParser(type, parserOptions = EMPTY_PARSER_OPTIONS) {
1365
+ let cache = this.parserCache.get(type);
1366
+
1367
+ if (cache === undefined) {
1368
+ cache = new WeakMap();
1369
+ this.parserCache.set(type, cache);
1370
+ }
1371
+
1372
+ let parser = cache.get(parserOptions);
1373
+
1374
+ if (parser === undefined) {
1375
+ parser = this.createParser(type, parserOptions);
1376
+ cache.set(parserOptions, parser);
1377
+ }
1378
+
1379
+ return parser;
1380
+ }
1381
+
1382
+ /**
1383
+ * @param {string} type type
1384
+ * @param {ParserOptions} parserOptions parser options
1385
+ * @returns {Parser} parser
1386
+ */
1387
+ createParser(type, parserOptions = {}) {
1388
+ parserOptions = mergeGlobalOptions(
1389
+ this._globalParserOptions,
1390
+ type,
1391
+ parserOptions
1392
+ );
1393
+ const parser = this.hooks.createParser.for(type).call(parserOptions);
1394
+ if (!parser) {
1395
+ throw new Error(`No parser registered for ${type}`);
1396
+ }
1397
+ this.hooks.parser.for(type).call(parser, parserOptions);
1398
+ return parser;
1399
+ }
1400
+
1401
+ /**
1402
+ * @param {string} type type of generator
1403
+ * @param {GeneratorOptions} generatorOptions generator options
1404
+ * @returns {Generator} generator
1405
+ */
1406
+ getGenerator(type, generatorOptions = EMPTY_GENERATOR_OPTIONS) {
1407
+ let cache = this.generatorCache.get(type);
1408
+
1409
+ if (cache === undefined) {
1410
+ cache = new WeakMap();
1411
+ this.generatorCache.set(type, cache);
1412
+ }
1413
+
1414
+ let generator = cache.get(generatorOptions);
1415
+
1416
+ if (generator === undefined) {
1417
+ generator = this.createGenerator(type, generatorOptions);
1418
+ cache.set(generatorOptions, generator);
1419
+ }
1420
+
1421
+ return generator;
1422
+ }
1423
+
1424
+ /**
1425
+ * @param {string} type type of generator
1426
+ * @param {GeneratorOptions} generatorOptions generator options
1427
+ * @returns {Generator} generator
1428
+ */
1429
+ createGenerator(type, generatorOptions = {}) {
1430
+ generatorOptions = mergeGlobalOptions(
1431
+ this._globalGeneratorOptions,
1432
+ type,
1433
+ generatorOptions
1434
+ );
1435
+ const generator = this.hooks.createGenerator
1436
+ .for(type)
1437
+ .call(generatorOptions);
1438
+ if (!generator) {
1439
+ throw new Error(`No generator registered for ${type}`);
1440
+ }
1441
+ this.hooks.generator.for(type).call(generator, generatorOptions);
1442
+ return generator;
1443
+ }
1444
+
1445
+ /**
1446
+ * @param {Parameters<ResolverFactory["get"]>[0]} type type of resolver
1447
+ * @param {Parameters<ResolverFactory["get"]>[1]=} resolveOptions options
1448
+ * @returns {ReturnType<ResolverFactory["get"]>} the resolver
1449
+ */
1450
+ getResolver(type, resolveOptions) {
1451
+ return this.resolverFactory.get(type, resolveOptions);
1452
+ }
1453
+ }
1454
+
1455
+ module.exports = NormalModuleFactory;