@eriche/webpack 4.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +784 -0
  3. package/SECURITY.md +9 -0
  4. package/bin/webpack.js +171 -0
  5. package/buildin/amd-define.js +3 -0
  6. package/buildin/amd-options.js +2 -0
  7. package/buildin/global.js +20 -0
  8. package/buildin/harmony-module.js +24 -0
  9. package/buildin/module.js +22 -0
  10. package/buildin/system.js +7 -0
  11. package/declarations/WebpackOptions.d.ts +1466 -0
  12. package/declarations/plugins/BannerPlugin.d.ts +49 -0
  13. package/declarations/plugins/DllPlugin.d.ts +32 -0
  14. package/declarations/plugins/DllReferencePlugin.d.ts +126 -0
  15. package/declarations/plugins/HashedModuleIdsPlugin.d.ts +24 -0
  16. package/declarations/plugins/IgnorePlugin.d.ts +27 -0
  17. package/declarations/plugins/LoaderOptionsPlugin.d.ts +27 -0
  18. package/declarations/plugins/ProgressPlugin.d.ts +42 -0
  19. package/declarations/plugins/SourceMapDevToolPlugin.d.ts +94 -0
  20. package/declarations/plugins/WatchIgnorePlugin.d.ts +10 -0
  21. package/declarations/plugins/debug/ProfilingPlugin.d.ts +12 -0
  22. package/declarations/plugins/optimize/AggressiveSplittingPlugin.d.ts +24 -0
  23. package/declarations/plugins/optimize/LimitChunkCountPlugin.d.ts +16 -0
  24. package/declarations/plugins/optimize/MinChunkSizePlugin.d.ts +12 -0
  25. package/declarations/plugins/optimize/OccurrenceOrderChunkIdsPlugin.d.ts +12 -0
  26. package/declarations/plugins/optimize/OccurrenceOrderModuleIdsPlugin.d.ts +12 -0
  27. package/hot/dev-server.js +61 -0
  28. package/hot/emitter.js +2 -0
  29. package/hot/log-apply-result.js +44 -0
  30. package/hot/log.js +59 -0
  31. package/hot/only-dev-server.js +102 -0
  32. package/hot/poll.js +37 -0
  33. package/hot/signal.js +62 -0
  34. package/lib/APIPlugin.js +84 -0
  35. package/lib/AbstractMethodError.js +43 -0
  36. package/lib/AmdMainTemplatePlugin.js +106 -0
  37. package/lib/AsyncDependenciesBlock.js +110 -0
  38. package/lib/AsyncDependencyToInitialChunkError.js +31 -0
  39. package/lib/AutomaticPrefetchPlugin.js +57 -0
  40. package/lib/BannerPlugin.js +122 -0
  41. package/lib/BasicEvaluatedExpression.js +248 -0
  42. package/lib/CachePlugin.js +100 -0
  43. package/lib/CaseSensitiveModulesWarning.js +67 -0
  44. package/lib/Chunk.js +875 -0
  45. package/lib/ChunkGroup.js +513 -0
  46. package/lib/ChunkRenderError.js +32 -0
  47. package/lib/ChunkTemplate.js +87 -0
  48. package/lib/CommentCompilationWarning.js +32 -0
  49. package/lib/CommonJsStuffPlugin.js +116 -0
  50. package/lib/CompatibilityPlugin.js +70 -0
  51. package/lib/Compilation.js +2327 -0
  52. package/lib/Compiler.js +735 -0
  53. package/lib/ConcurrentCompilationError.js +19 -0
  54. package/lib/ConstPlugin.js +348 -0
  55. package/lib/ContextExclusionPlugin.js +28 -0
  56. package/lib/ContextModule.js +872 -0
  57. package/lib/ContextModuleFactory.js +262 -0
  58. package/lib/ContextReplacementPlugin.js +133 -0
  59. package/lib/DefinePlugin.js +289 -0
  60. package/lib/DelegatedModule.js +114 -0
  61. package/lib/DelegatedModuleFactoryPlugin.js +95 -0
  62. package/lib/DelegatedPlugin.js +39 -0
  63. package/lib/DependenciesBlock.js +124 -0
  64. package/lib/DependenciesBlockVariable.js +72 -0
  65. package/lib/Dependency.js +89 -0
  66. package/lib/DllEntryPlugin.js +54 -0
  67. package/lib/DllModule.js +60 -0
  68. package/lib/DllModuleFactory.js +29 -0
  69. package/lib/DllPlugin.js +49 -0
  70. package/lib/DllReferencePlugin.js +156 -0
  71. package/lib/DynamicEntryPlugin.js +94 -0
  72. package/lib/EntryModuleNotFoundError.js +21 -0
  73. package/lib/EntryOptionPlugin.js +46 -0
  74. package/lib/Entrypoint.js +64 -0
  75. package/lib/EnvironmentPlugin.js +72 -0
  76. package/lib/ErrorHelpers.js +60 -0
  77. package/lib/EvalDevToolModulePlugin.js +27 -0
  78. package/lib/EvalDevToolModuleTemplatePlugin.js +61 -0
  79. package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +120 -0
  80. package/lib/EvalSourceMapDevToolPlugin.js +41 -0
  81. package/lib/ExportPropertyMainTemplatePlugin.js +53 -0
  82. package/lib/ExtendedAPIPlugin.js +88 -0
  83. package/lib/ExternalModule.js +179 -0
  84. package/lib/ExternalModuleFactoryPlugin.js +110 -0
  85. package/lib/ExternalsPlugin.js +23 -0
  86. package/lib/FlagAllModulesAsUsedPlugin.js +38 -0
  87. package/lib/FlagDependencyExportsPlugin.js +174 -0
  88. package/lib/FlagDependencyUsagePlugin.js +116 -0
  89. package/lib/FlagInitialModulesAsUsedPlugin.js +36 -0
  90. package/lib/FunctionModulePlugin.js +19 -0
  91. package/lib/FunctionModuleTemplatePlugin.js +102 -0
  92. package/lib/Generator.js +60 -0
  93. package/lib/GraphHelpers.js +65 -0
  94. package/lib/HarmonyLinkingError.js +17 -0
  95. package/lib/HashedModuleIdsPlugin.js +63 -0
  96. package/lib/HotModuleReplacement.runtime.js +721 -0
  97. package/lib/HotModuleReplacementPlugin.js +425 -0
  98. package/lib/HotUpdateChunk.js +17 -0
  99. package/lib/HotUpdateChunkTemplate.js +78 -0
  100. package/lib/IgnorePlugin.js +91 -0
  101. package/lib/JavascriptGenerator.js +229 -0
  102. package/lib/JavascriptModulesPlugin.js +185 -0
  103. package/lib/JsonGenerator.js +57 -0
  104. package/lib/JsonModulesPlugin.js +30 -0
  105. package/lib/JsonParser.js +27 -0
  106. package/lib/LibManifestPlugin.js +90 -0
  107. package/lib/LibraryTemplatePlugin.js +186 -0
  108. package/lib/LoaderOptionsPlugin.js +58 -0
  109. package/lib/LoaderTargetPlugin.js +24 -0
  110. package/lib/MainTemplate.js +568 -0
  111. package/lib/MemoryOutputFileSystem.js +5 -0
  112. package/lib/Module.js +435 -0
  113. package/lib/ModuleBuildError.js +52 -0
  114. package/lib/ModuleDependencyError.js +35 -0
  115. package/lib/ModuleDependencyWarning.js +25 -0
  116. package/lib/ModuleError.js +36 -0
  117. package/lib/ModuleFilenameHelpers.js +179 -0
  118. package/lib/ModuleNotFoundError.js +23 -0
  119. package/lib/ModuleParseError.js +67 -0
  120. package/lib/ModuleReason.js +48 -0
  121. package/lib/ModuleTemplate.js +93 -0
  122. package/lib/ModuleWarning.js +36 -0
  123. package/lib/MultiCompiler.js +290 -0
  124. package/lib/MultiEntryPlugin.js +80 -0
  125. package/lib/MultiModule.js +87 -0
  126. package/lib/MultiModuleFactory.js +23 -0
  127. package/lib/MultiStats.js +92 -0
  128. package/lib/MultiWatching.js +50 -0
  129. package/lib/NamedChunksPlugin.js +29 -0
  130. package/lib/NamedModulesPlugin.js +58 -0
  131. package/lib/NoEmitOnErrorsPlugin.js +20 -0
  132. package/lib/NoModeWarning.js +23 -0
  133. package/lib/NodeStuffPlugin.js +118 -0
  134. package/lib/NormalModule.js +582 -0
  135. package/lib/NormalModuleFactory.js +528 -0
  136. package/lib/NormalModuleReplacementPlugin.js +51 -0
  137. package/lib/NullFactory.js +12 -0
  138. package/lib/OptionsApply.js +10 -0
  139. package/lib/OptionsDefaulter.js +141 -0
  140. package/lib/Parser.js +2454 -0
  141. package/lib/ParserHelpers.js +103 -0
  142. package/lib/PrefetchPlugin.js +37 -0
  143. package/lib/ProgressPlugin.js +307 -0
  144. package/lib/ProvidePlugin.js +86 -0
  145. package/lib/RawModule.js +56 -0
  146. package/lib/RecordIdsPlugin.js +236 -0
  147. package/lib/RemovedPluginError.js +11 -0
  148. package/lib/RequestShortener.js +83 -0
  149. package/lib/RequireJsStuffPlugin.js +66 -0
  150. package/lib/ResolverFactory.js +74 -0
  151. package/lib/RuleSet.js +567 -0
  152. package/lib/RuntimeTemplate.js +336 -0
  153. package/lib/SetVarMainTemplatePlugin.js +69 -0
  154. package/lib/SingleEntryPlugin.js +63 -0
  155. package/lib/SizeFormatHelpers.js +24 -0
  156. package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -0
  157. package/lib/SourceMapDevToolPlugin.js +418 -0
  158. package/lib/Stats.js +1685 -0
  159. package/lib/SystemMainTemplatePlugin.js +137 -0
  160. package/lib/Template.js +291 -0
  161. package/lib/TemplatedPathPlugin.js +188 -0
  162. package/lib/UmdMainTemplatePlugin.js +305 -0
  163. package/lib/UnsupportedFeatureWarning.js +30 -0
  164. package/lib/UseStrictPlugin.js +54 -0
  165. package/lib/WarnCaseSensitiveModulesPlugin.js +37 -0
  166. package/lib/WarnNoModeSetPlugin.js +17 -0
  167. package/lib/WatchIgnorePlugin.js +106 -0
  168. package/lib/Watching.js +211 -0
  169. package/lib/WebpackError.js +31 -0
  170. package/lib/WebpackOptionsApply.js +546 -0
  171. package/lib/WebpackOptionsDefaulter.js +391 -0
  172. package/lib/WebpackOptionsValidationError.js +390 -0
  173. package/lib/buildChunkGraph.js +712 -0
  174. package/lib/compareLocations.js +52 -0
  175. package/lib/debug/ProfilingPlugin.js +442 -0
  176. package/lib/dependencies/AMDDefineDependency.js +137 -0
  177. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +336 -0
  178. package/lib/dependencies/AMDPlugin.js +249 -0
  179. package/lib/dependencies/AMDRequireArrayDependency.js +49 -0
  180. package/lib/dependencies/AMDRequireContextDependency.js +20 -0
  181. package/lib/dependencies/AMDRequireDependenciesBlock.js +47 -0
  182. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +274 -0
  183. package/lib/dependencies/AMDRequireDependency.js +135 -0
  184. package/lib/dependencies/AMDRequireItemDependency.js +22 -0
  185. package/lib/dependencies/CommonJsPlugin.js +158 -0
  186. package/lib/dependencies/CommonJsRequireContextDependency.js +23 -0
  187. package/lib/dependencies/CommonJsRequireDependency.js +22 -0
  188. package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +138 -0
  189. package/lib/dependencies/ConstDependency.js +33 -0
  190. package/lib/dependencies/ContextDependency.js +68 -0
  191. package/lib/dependencies/ContextDependencyHelpers.js +232 -0
  192. package/lib/dependencies/ContextDependencyTemplateAsId.js +43 -0
  193. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +39 -0
  194. package/lib/dependencies/ContextElementDependency.js +21 -0
  195. package/lib/dependencies/CriticalDependencyWarning.js +20 -0
  196. package/lib/dependencies/DelegatedExportsDependency.js +33 -0
  197. package/lib/dependencies/DelegatedSourceDependency.js +18 -0
  198. package/lib/dependencies/DependencyReference.js +64 -0
  199. package/lib/dependencies/DllEntryDependency.js +20 -0
  200. package/lib/dependencies/HarmonyAcceptDependency.js +48 -0
  201. package/lib/dependencies/HarmonyAcceptImportDependency.js +23 -0
  202. package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -0
  203. package/lib/dependencies/HarmonyDetectionParserPlugin.js +96 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +154 -0
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +58 -0
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +659 -0
  208. package/lib/dependencies/HarmonyExportSpecifierDependency.js +54 -0
  209. package/lib/dependencies/HarmonyImportDependency.js +109 -0
  210. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +222 -0
  211. package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -0
  212. package/lib/dependencies/HarmonyImportSpecifierDependency.js +163 -0
  213. package/lib/dependencies/HarmonyInitDependency.js +60 -0
  214. package/lib/dependencies/HarmonyModulesPlugin.js +143 -0
  215. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +26 -0
  216. package/lib/dependencies/ImportContextDependency.js +23 -0
  217. package/lib/dependencies/ImportDependenciesBlock.js +18 -0
  218. package/lib/dependencies/ImportDependency.js +34 -0
  219. package/lib/dependencies/ImportEagerDependency.js +32 -0
  220. package/lib/dependencies/ImportParserPlugin.js +248 -0
  221. package/lib/dependencies/ImportPlugin.js +79 -0
  222. package/lib/dependencies/ImportWeakDependency.js +34 -0
  223. package/lib/dependencies/JsonExportsDependency.js +26 -0
  224. package/lib/dependencies/LoaderDependency.js +21 -0
  225. package/lib/dependencies/LoaderPlugin.js +115 -0
  226. package/lib/dependencies/LocalModule.js +23 -0
  227. package/lib/dependencies/LocalModuleDependency.js +28 -0
  228. package/lib/dependencies/LocalModulesHelpers.js +52 -0
  229. package/lib/dependencies/ModuleDependency.js +23 -0
  230. package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -0
  231. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -0
  232. package/lib/dependencies/ModuleHotAcceptDependency.js +23 -0
  233. package/lib/dependencies/ModuleHotDeclineDependency.js +23 -0
  234. package/lib/dependencies/MultiEntryDependency.js +25 -0
  235. package/lib/dependencies/NullDependency.js +20 -0
  236. package/lib/dependencies/PrefetchDependency.js +18 -0
  237. package/lib/dependencies/RequireContextDependency.js +22 -0
  238. package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -0
  239. package/lib/dependencies/RequireContextPlugin.js +143 -0
  240. package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -0
  241. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -0
  242. package/lib/dependencies/RequireEnsureDependency.js +58 -0
  243. package/lib/dependencies/RequireEnsureItemDependency.js +21 -0
  244. package/lib/dependencies/RequireEnsurePlugin.js +74 -0
  245. package/lib/dependencies/RequireHeaderDependency.js +26 -0
  246. package/lib/dependencies/RequireIncludeDependency.js +39 -0
  247. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -0
  248. package/lib/dependencies/RequireIncludePlugin.js +61 -0
  249. package/lib/dependencies/RequireResolveContextDependency.js +23 -0
  250. package/lib/dependencies/RequireResolveDependency.js +22 -0
  251. package/lib/dependencies/RequireResolveDependencyParserPlugin.js +86 -0
  252. package/lib/dependencies/RequireResolveHeaderDependency.js +26 -0
  253. package/lib/dependencies/SingleEntryDependency.js +21 -0
  254. package/lib/dependencies/SystemPlugin.js +122 -0
  255. package/lib/dependencies/UnsupportedDependency.js +27 -0
  256. package/lib/dependencies/WebAssemblyExportImportedDependency.js +31 -0
  257. package/lib/dependencies/WebAssemblyImportDependency.js +54 -0
  258. package/lib/dependencies/WebpackMissingModule.js +20 -0
  259. package/lib/dependencies/getFunctionExpression.js +52 -0
  260. package/lib/formatLocation.js +75 -0
  261. package/lib/logging/Logger.js +128 -0
  262. package/lib/logging/createConsoleLogger.js +210 -0
  263. package/lib/logging/runtime.js +36 -0
  264. package/lib/logging/truncateArgs.js +76 -0
  265. package/lib/node/NodeChunkTemplatePlugin.js +31 -0
  266. package/lib/node/NodeEnvironmentPlugin.js +44 -0
  267. package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +36 -0
  268. package/lib/node/NodeMainTemplate.runtime.js +32 -0
  269. package/lib/node/NodeMainTemplateAsync.runtime.js +50 -0
  270. package/lib/node/NodeMainTemplatePlugin.js +321 -0
  271. package/lib/node/NodeOutputFileSystem.js +22 -0
  272. package/lib/node/NodeSourcePlugin.js +141 -0
  273. package/lib/node/NodeTargetPlugin.js +19 -0
  274. package/lib/node/NodeTemplatePlugin.js +31 -0
  275. package/lib/node/NodeWatchFileSystem.js +109 -0
  276. package/lib/node/ReadFileCompileWasmTemplatePlugin.js +61 -0
  277. package/lib/node/nodeConsole.js +135 -0
  278. package/lib/optimize/AggressiveMergingPlugin.js +87 -0
  279. package/lib/optimize/AggressiveSplittingPlugin.js +294 -0
  280. package/lib/optimize/ChunkModuleIdRangePlugin.js +66 -0
  281. package/lib/optimize/ConcatenatedModule.js +1477 -0
  282. package/lib/optimize/EnsureChunkConditionsPlugin.js +70 -0
  283. package/lib/optimize/FlagIncludedChunksPlugin.js +99 -0
  284. package/lib/optimize/LimitChunkCountPlugin.js +231 -0
  285. package/lib/optimize/MergeDuplicateChunksPlugin.js +78 -0
  286. package/lib/optimize/MinChunkSizePlugin.js +82 -0
  287. package/lib/optimize/MinMaxSizeWarning.js +29 -0
  288. package/lib/optimize/ModuleConcatenationPlugin.js +485 -0
  289. package/lib/optimize/NaturalChunkOrderPlugin.js +41 -0
  290. package/lib/optimize/OccurrenceChunkOrderPlugin.js +66 -0
  291. package/lib/optimize/OccurrenceModuleOrderPlugin.js +112 -0
  292. package/lib/optimize/OccurrenceOrderPlugin.js +135 -0
  293. package/lib/optimize/RemoveEmptyChunksPlugin.js +42 -0
  294. package/lib/optimize/RemoveParentModulesPlugin.js +127 -0
  295. package/lib/optimize/RuntimeChunkPlugin.js +41 -0
  296. package/lib/optimize/SideEffectsFlagPlugin.js +352 -0
  297. package/lib/optimize/SplitChunksPlugin.js +971 -0
  298. package/lib/performance/AssetsOverSizeLimitWarning.js +30 -0
  299. package/lib/performance/EntrypointsOverSizeLimitWarning.js +30 -0
  300. package/lib/performance/NoAsyncChunksWarning.js +21 -0
  301. package/lib/performance/SizeLimitsPlugin.js +125 -0
  302. package/lib/util/LazyBucketSortedSet.js +235 -0
  303. package/lib/util/Queue.js +46 -0
  304. package/lib/util/Semaphore.js +53 -0
  305. package/lib/util/SetHelpers.js +48 -0
  306. package/lib/util/SortableSet.js +140 -0
  307. package/lib/util/StackedSetMap.js +142 -0
  308. package/lib/util/TrackingSet.js +35 -0
  309. package/lib/util/cachedMerge.js +35 -0
  310. package/lib/util/cleverMerge.js +77 -0
  311. package/lib/util/createHash.js +174 -0
  312. package/lib/util/deterministicGrouping.js +274 -0
  313. package/lib/util/hash/BatchedHash.js +71 -0
  314. package/lib/util/hash/md4.js +25 -0
  315. package/lib/util/hash/wasm-hash.js +174 -0
  316. package/lib/util/identifier.js +127 -0
  317. package/lib/util/objectToMap.js +16 -0
  318. package/lib/validateSchema.js +67 -0
  319. package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +17 -0
  320. package/lib/wasm/WasmFinalizeExportsPlugin.js +69 -0
  321. package/lib/wasm/WasmMainTemplatePlugin.js +341 -0
  322. package/lib/wasm/WebAssemblyGenerator.js +458 -0
  323. package/lib/wasm/WebAssemblyInInitialChunkError.js +88 -0
  324. package/lib/wasm/WebAssemblyJavascriptGenerator.js +152 -0
  325. package/lib/wasm/WebAssemblyModulesPlugin.js +128 -0
  326. package/lib/wasm/WebAssemblyParser.js +175 -0
  327. package/lib/wasm/WebAssemblyUtils.js +59 -0
  328. package/lib/web/FetchCompileWasmTemplatePlugin.js +37 -0
  329. package/lib/web/JsonpChunkTemplatePlugin.js +71 -0
  330. package/lib/web/JsonpExportMainTemplatePlugin.js +50 -0
  331. package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -0
  332. package/lib/web/JsonpMainTemplate.runtime.js +71 -0
  333. package/lib/web/JsonpMainTemplatePlugin.js +615 -0
  334. package/lib/web/JsonpTemplatePlugin.js +23 -0
  335. package/lib/web/WebEnvironmentPlugin.js +18 -0
  336. package/lib/webpack.js +206 -0
  337. package/lib/webpack.web.js +31 -0
  338. package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -0
  339. package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -0
  340. package/lib/webworker/WebWorkerMainTemplate.runtime.js +73 -0
  341. package/lib/webworker/WebWorkerMainTemplatePlugin.js +192 -0
  342. package/lib/webworker/WebWorkerTemplatePlugin.js +25 -0
  343. package/package.json +211 -0
  344. package/schemas/WebpackOptions.json +2285 -0
  345. package/schemas/ajv.absolutePath.js +57 -0
  346. package/schemas/plugins/BannerPlugin.json +101 -0
  347. package/schemas/plugins/DllPlugin.json +36 -0
  348. package/schemas/plugins/DllReferencePlugin.json +205 -0
  349. package/schemas/plugins/HashedModuleIdsPlugin.json +26 -0
  350. package/schemas/plugins/IgnorePlugin.json +37 -0
  351. package/schemas/plugins/LoaderOptionsPlugin.json +27 -0
  352. package/schemas/plugins/ProgressPlugin.json +52 -0
  353. package/schemas/plugins/SourceMapDevToolPlugin.json +185 -0
  354. package/schemas/plugins/WatchIgnorePlugin.json +18 -0
  355. package/schemas/plugins/debug/ProfilingPlugin.json +13 -0
  356. package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +23 -0
  357. package/schemas/plugins/optimize/LimitChunkCountPlugin.json +16 -0
  358. package/schemas/plugins/optimize/MinChunkSizePlugin.json +12 -0
  359. package/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json +11 -0
  360. package/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json +11 -0
  361. package/web_modules/node-libs-browser.js +0 -0
@@ -0,0 +1,872 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const util = require("util");
7
+ const { OriginalSource, RawSource } = require("webpack-sources");
8
+ const Module = require("./Module");
9
+ const AsyncDependenciesBlock = require("./AsyncDependenciesBlock");
10
+ const Template = require("./Template");
11
+ const contextify = require("./util/identifier").contextify;
12
+
13
+ /** @typedef {"sync" | "eager" | "weak" | "async-weak" | "lazy" | "lazy-once"} ContextMode Context mode */
14
+ /** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */
15
+
16
+ /**
17
+ * @callback ResolveDependenciesCallback
18
+ * @param {Error=} err
19
+ * @param {ContextElementDependency[]} dependencies
20
+ */
21
+
22
+ /**
23
+ * @callback ResolveDependencies
24
+ * @param {TODO} fs
25
+ * @param {TODO} options
26
+ * @param {ResolveDependenciesCallback} callback
27
+ */
28
+
29
+ class ContextModule extends Module {
30
+ // type ContextMode = "sync" | "eager" | "weak" | "async-weak" | "lazy" | "lazy-once"
31
+ // type ContextOptions = { resource: string, recursive: boolean, regExp: RegExp, addon?: string, mode?: ContextMode, chunkName?: string, include?: RegExp, exclude?: RegExp, groupOptions?: Object }
32
+ // resolveDependencies: (fs: FS, options: ContextOptions, (err: Error?, dependencies: Dependency[]) => void) => void
33
+ // options: ContextOptions
34
+ /**
35
+ * @param {ResolveDependencies} resolveDependencies function to get dependencies in this context
36
+ * @param {TODO} options options object
37
+ */
38
+ constructor(resolveDependencies, options) {
39
+ let resource;
40
+ let resourceQuery;
41
+ const queryIdx = options.resource.indexOf("?");
42
+ if (queryIdx >= 0) {
43
+ resource = options.resource.substr(0, queryIdx);
44
+ resourceQuery = options.resource.substr(queryIdx);
45
+ } else {
46
+ resource = options.resource;
47
+ resourceQuery = "";
48
+ }
49
+
50
+ super("javascript/dynamic", resource);
51
+
52
+ // Info from Factory
53
+ this.resolveDependencies = resolveDependencies;
54
+ this.options = Object.assign({}, options, {
55
+ resource: resource,
56
+ resourceQuery: resourceQuery
57
+ });
58
+ if (options.resolveOptions !== undefined) {
59
+ this.resolveOptions = options.resolveOptions;
60
+ }
61
+
62
+ // Info from Build
63
+ this._contextDependencies = new Set([this.context]);
64
+
65
+ if (typeof options.mode !== "string") {
66
+ throw new Error("options.mode is a required option");
67
+ }
68
+
69
+ this._identifier = this._createIdentifier();
70
+ }
71
+
72
+ updateCacheModule(module) {
73
+ this.resolveDependencies = module.resolveDependencies;
74
+ this.options = module.options;
75
+ this.resolveOptions = module.resolveOptions;
76
+ }
77
+
78
+ prettyRegExp(regexString) {
79
+ // remove the "/" at the front and the beginning
80
+ // "/foo/" -> "foo"
81
+ return regexString.substring(1, regexString.length - 1);
82
+ }
83
+
84
+ _createIdentifier() {
85
+ let identifier = this.context;
86
+ if (this.options.resourceQuery) {
87
+ identifier += ` ${this.options.resourceQuery}`;
88
+ }
89
+ if (this.options.mode) {
90
+ identifier += ` ${this.options.mode}`;
91
+ }
92
+ if (!this.options.recursive) {
93
+ identifier += " nonrecursive";
94
+ }
95
+ if (this.options.addon) {
96
+ identifier += ` ${this.options.addon}`;
97
+ }
98
+ if (this.options.regExp) {
99
+ identifier += ` ${this.options.regExp}`;
100
+ }
101
+ if (this.options.include) {
102
+ identifier += ` include: ${this.options.include}`;
103
+ }
104
+ if (this.options.exclude) {
105
+ identifier += ` exclude: ${this.options.exclude}`;
106
+ }
107
+ if (this.options.groupOptions) {
108
+ identifier += ` groupOptions: ${JSON.stringify(
109
+ this.options.groupOptions
110
+ )}`;
111
+ }
112
+ if (this.options.namespaceObject === "strict") {
113
+ identifier += " strict namespace object";
114
+ } else if (this.options.namespaceObject) {
115
+ identifier += " namespace object";
116
+ }
117
+
118
+ return identifier;
119
+ }
120
+
121
+ identifier() {
122
+ return this._identifier;
123
+ }
124
+
125
+ readableIdentifier(requestShortener) {
126
+ let identifier = requestShortener.shorten(this.context);
127
+ if (this.options.resourceQuery) {
128
+ identifier += ` ${this.options.resourceQuery}`;
129
+ }
130
+ if (this.options.mode) {
131
+ identifier += ` ${this.options.mode}`;
132
+ }
133
+ if (!this.options.recursive) {
134
+ identifier += " nonrecursive";
135
+ }
136
+ if (this.options.addon) {
137
+ identifier += ` ${requestShortener.shorten(this.options.addon)}`;
138
+ }
139
+ if (this.options.regExp) {
140
+ identifier += ` ${this.prettyRegExp(this.options.regExp + "")}`;
141
+ }
142
+ if (this.options.include) {
143
+ identifier += ` include: ${this.prettyRegExp(this.options.include + "")}`;
144
+ }
145
+ if (this.options.exclude) {
146
+ identifier += ` exclude: ${this.prettyRegExp(this.options.exclude + "")}`;
147
+ }
148
+ if (this.options.groupOptions) {
149
+ const groupOptions = this.options.groupOptions;
150
+ for (const key of Object.keys(groupOptions)) {
151
+ identifier += ` ${key}: ${groupOptions[key]}`;
152
+ }
153
+ }
154
+ if (this.options.namespaceObject === "strict") {
155
+ identifier += " strict namespace object";
156
+ } else if (this.options.namespaceObject) {
157
+ identifier += " namespace object";
158
+ }
159
+
160
+ return identifier;
161
+ }
162
+
163
+ libIdent(options) {
164
+ let identifier = contextify(options.context, this.context);
165
+ if (this.options.mode) {
166
+ identifier += ` ${this.options.mode}`;
167
+ }
168
+ if (this.options.recursive) {
169
+ identifier += " recursive";
170
+ }
171
+ if (this.options.addon) {
172
+ identifier += ` ${contextify(options.context, this.options.addon)}`;
173
+ }
174
+ if (this.options.regExp) {
175
+ identifier += ` ${this.prettyRegExp(this.options.regExp + "")}`;
176
+ }
177
+ if (this.options.include) {
178
+ identifier += ` include: ${this.prettyRegExp(this.options.include + "")}`;
179
+ }
180
+ if (this.options.exclude) {
181
+ identifier += ` exclude: ${this.prettyRegExp(this.options.exclude + "")}`;
182
+ }
183
+
184
+ return identifier;
185
+ }
186
+
187
+ needRebuild(fileTimestamps, contextTimestamps) {
188
+ const ts = contextTimestamps.get(this.context);
189
+ if (!ts) {
190
+ return true;
191
+ }
192
+
193
+ return ts >= this.buildInfo.builtTime;
194
+ }
195
+
196
+ build(options, compilation, resolver, fs, callback) {
197
+ this.built = true;
198
+ this.buildMeta = {};
199
+ this.buildInfo = {
200
+ builtTime: Date.now(),
201
+ contextDependencies: this._contextDependencies
202
+ };
203
+ this.resolveDependencies(fs, this.options, (err, dependencies) => {
204
+ if (err) return callback(err);
205
+
206
+ // abort if something failed
207
+ // this will create an empty context
208
+ if (!dependencies) {
209
+ callback();
210
+ return;
211
+ }
212
+
213
+ // enhance dependencies with meta info
214
+ for (const dep of dependencies) {
215
+ dep.loc = {
216
+ name: dep.userRequest
217
+ };
218
+ dep.request = this.options.addon + dep.request;
219
+ }
220
+
221
+ if (this.options.mode === "sync" || this.options.mode === "eager") {
222
+ // if we have an sync or eager context
223
+ // just add all dependencies and continue
224
+ this.dependencies = dependencies;
225
+ } else if (this.options.mode === "lazy-once") {
226
+ // for the lazy-once mode create a new async dependency block
227
+ // and add that block to this context
228
+ if (dependencies.length > 0) {
229
+ const block = new AsyncDependenciesBlock(
230
+ Object.assign({}, this.options.groupOptions, {
231
+ name: this.options.chunkName
232
+ }),
233
+ this
234
+ );
235
+ for (const dep of dependencies) {
236
+ block.addDependency(dep);
237
+ }
238
+ this.addBlock(block);
239
+ }
240
+ } else if (
241
+ this.options.mode === "weak" ||
242
+ this.options.mode === "async-weak"
243
+ ) {
244
+ // we mark all dependencies as weak
245
+ for (const dep of dependencies) {
246
+ dep.weak = true;
247
+ }
248
+ this.dependencies = dependencies;
249
+ } else if (this.options.mode === "lazy") {
250
+ // if we are lazy create a new async dependency block per dependency
251
+ // and add all blocks to this context
252
+ let index = 0;
253
+ for (const dep of dependencies) {
254
+ let chunkName = this.options.chunkName;
255
+ if (chunkName) {
256
+ if (!/\[(index|request)\]/.test(chunkName)) {
257
+ chunkName += "[index]";
258
+ }
259
+ chunkName = chunkName.replace(/\[index\]/g, index++);
260
+ chunkName = chunkName.replace(
261
+ /\[request\]/g,
262
+ Template.toPath(dep.userRequest)
263
+ );
264
+ }
265
+ const block = new AsyncDependenciesBlock(
266
+ Object.assign({}, this.options.groupOptions, {
267
+ name: chunkName
268
+ }),
269
+ dep.module,
270
+ dep.loc,
271
+ dep.userRequest
272
+ );
273
+ block.addDependency(dep);
274
+ this.addBlock(block);
275
+ }
276
+ } else {
277
+ callback(
278
+ new Error(`Unsupported mode "${this.options.mode}" in context`)
279
+ );
280
+ return;
281
+ }
282
+ callback();
283
+ });
284
+ }
285
+
286
+ getUserRequestMap(dependencies) {
287
+ // if we filter first we get a new array
288
+ // therefor we dont need to create a clone of dependencies explicitly
289
+ // therefore the order of this is !important!
290
+ return dependencies
291
+ .filter(dependency => dependency.module)
292
+ .sort((a, b) => {
293
+ if (a.userRequest === b.userRequest) {
294
+ return 0;
295
+ }
296
+ return a.userRequest < b.userRequest ? -1 : 1;
297
+ })
298
+ .reduce((map, dep) => {
299
+ map[dep.userRequest] = dep.module.id;
300
+ return map;
301
+ }, Object.create(null));
302
+ }
303
+
304
+ getFakeMap(dependencies) {
305
+ if (!this.options.namespaceObject) {
306
+ return 9;
307
+ }
308
+ // if we filter first we get a new array
309
+ // therefor we dont need to create a clone of dependencies explicitly
310
+ // therefore the order of this is !important!
311
+ let hasNonHarmony = false;
312
+ let hasNamespace = false;
313
+ let hasNamed = false;
314
+ const fakeMap = dependencies
315
+ .filter(dependency => dependency.module)
316
+ .sort((a, b) => {
317
+ return b.module.id - a.module.id;
318
+ })
319
+ .reduce((map, dep) => {
320
+ const exportsType =
321
+ dep.module.buildMeta && dep.module.buildMeta.exportsType;
322
+ const id = dep.module.id;
323
+ if (!exportsType) {
324
+ map[id] = this.options.namespaceObject === "strict" ? 1 : 7;
325
+ hasNonHarmony = true;
326
+ } else if (exportsType === "namespace") {
327
+ map[id] = 9;
328
+ hasNamespace = true;
329
+ } else if (exportsType === "named") {
330
+ map[id] = 3;
331
+ hasNamed = true;
332
+ }
333
+ return map;
334
+ }, Object.create(null));
335
+ if (!hasNamespace && hasNonHarmony && !hasNamed) {
336
+ return this.options.namespaceObject === "strict" ? 1 : 7;
337
+ }
338
+ if (hasNamespace && !hasNonHarmony && !hasNamed) {
339
+ return 9;
340
+ }
341
+ if (!hasNamespace && !hasNonHarmony && hasNamed) {
342
+ return 3;
343
+ }
344
+ if (!hasNamespace && !hasNonHarmony && !hasNamed) {
345
+ return 9;
346
+ }
347
+ return fakeMap;
348
+ }
349
+
350
+ getFakeMapInitStatement(fakeMap) {
351
+ return typeof fakeMap === "object"
352
+ ? `var fakeMap = ${JSON.stringify(fakeMap, null, "\t")};`
353
+ : "";
354
+ }
355
+
356
+ getReturn(type) {
357
+ if (type === 9) {
358
+ return "__webpack_require__(id)";
359
+ }
360
+ return `__webpack_require__.t(id, ${type})`;
361
+ }
362
+
363
+ getReturnModuleObjectSource(fakeMap, fakeMapDataExpression = "fakeMap[id]") {
364
+ if (typeof fakeMap === "number") {
365
+ return `return ${this.getReturn(fakeMap)};`;
366
+ }
367
+ return `return __webpack_require__.t(id, ${fakeMapDataExpression})`;
368
+ }
369
+
370
+ getSyncSource(dependencies, id) {
371
+ const map = this.getUserRequestMap(dependencies);
372
+ const fakeMap = this.getFakeMap(dependencies);
373
+ const returnModuleObject = this.getReturnModuleObjectSource(fakeMap);
374
+
375
+ return `var map = ${JSON.stringify(map, null, "\t")};
376
+ ${this.getFakeMapInitStatement(fakeMap)}
377
+
378
+ function webpackContext(req) {
379
+ var id = webpackContextResolve(req);
380
+ ${returnModuleObject}
381
+ }
382
+ function webpackContextResolve(req) {
383
+ if(!__webpack_require__.o(map, req)) {
384
+ var e = new Error("Cannot find module '" + req + "'");
385
+ e.code = 'MODULE_NOT_FOUND';
386
+ throw e;
387
+ }
388
+ return map[req];
389
+ }
390
+ webpackContext.keys = function webpackContextKeys() {
391
+ return Object.keys(map);
392
+ };
393
+ webpackContext.resolve = webpackContextResolve;
394
+ module.exports = webpackContext;
395
+ webpackContext.id = ${JSON.stringify(id)};`;
396
+ }
397
+
398
+ getWeakSyncSource(dependencies, id) {
399
+ const map = this.getUserRequestMap(dependencies);
400
+ const fakeMap = this.getFakeMap(dependencies);
401
+ const returnModuleObject = this.getReturnModuleObjectSource(fakeMap);
402
+
403
+ return `var map = ${JSON.stringify(map, null, "\t")};
404
+ ${this.getFakeMapInitStatement(fakeMap)}
405
+
406
+ function webpackContext(req) {
407
+ var id = webpackContextResolve(req);
408
+ if(!__webpack_require__.m[id]) {
409
+ var e = new Error("Module '" + req + "' ('" + id + "') is not available (weak dependency)");
410
+ e.code = 'MODULE_NOT_FOUND';
411
+ throw e;
412
+ }
413
+ ${returnModuleObject}
414
+ }
415
+ function webpackContextResolve(req) {
416
+ if(!__webpack_require__.o(map, req)) {
417
+ var e = new Error("Cannot find module '" + req + "'");
418
+ e.code = 'MODULE_NOT_FOUND';
419
+ throw e;
420
+ }
421
+ return map[req];
422
+ }
423
+ webpackContext.keys = function webpackContextKeys() {
424
+ return Object.keys(map);
425
+ };
426
+ webpackContext.resolve = webpackContextResolve;
427
+ webpackContext.id = ${JSON.stringify(id)};
428
+ module.exports = webpackContext;`;
429
+ }
430
+
431
+ getAsyncWeakSource(dependencies, id) {
432
+ const map = this.getUserRequestMap(dependencies);
433
+ const fakeMap = this.getFakeMap(dependencies);
434
+ const returnModuleObject = this.getReturnModuleObjectSource(fakeMap);
435
+
436
+ return `var map = ${JSON.stringify(map, null, "\t")};
437
+ ${this.getFakeMapInitStatement(fakeMap)}
438
+
439
+ function webpackAsyncContext(req) {
440
+ return webpackAsyncContextResolve(req).then(function(id) {
441
+ if(!__webpack_require__.m[id]) {
442
+ var e = new Error("Module '" + req + "' ('" + id + "') is not available (weak dependency)");
443
+ e.code = 'MODULE_NOT_FOUND';
444
+ throw e;
445
+ }
446
+ ${returnModuleObject}
447
+ });
448
+ }
449
+ function webpackAsyncContextResolve(req) {
450
+ // Here Promise.resolve().then() is used instead of new Promise() to prevent
451
+ // uncaught exception popping up in devtools
452
+ return Promise.resolve().then(function() {
453
+ if(!__webpack_require__.o(map, req)) {
454
+ var e = new Error("Cannot find module '" + req + "'");
455
+ e.code = 'MODULE_NOT_FOUND';
456
+ throw e;
457
+ }
458
+ return map[req];
459
+ });
460
+ }
461
+ webpackAsyncContext.keys = function webpackAsyncContextKeys() {
462
+ return Object.keys(map);
463
+ };
464
+ webpackAsyncContext.resolve = webpackAsyncContextResolve;
465
+ webpackAsyncContext.id = ${JSON.stringify(id)};
466
+ module.exports = webpackAsyncContext;`;
467
+ }
468
+
469
+ getEagerSource(dependencies, id) {
470
+ const map = this.getUserRequestMap(dependencies);
471
+ const fakeMap = this.getFakeMap(dependencies);
472
+ const thenFunction =
473
+ fakeMap !== 9
474
+ ? `function(id) {
475
+ ${this.getReturnModuleObjectSource(fakeMap)}
476
+ }`
477
+ : "__webpack_require__";
478
+ return `var map = ${JSON.stringify(map, null, "\t")};
479
+ ${this.getFakeMapInitStatement(fakeMap)}
480
+
481
+ function webpackAsyncContext(req) {
482
+ return webpackAsyncContextResolve(req).then(${thenFunction});
483
+ }
484
+ function webpackAsyncContextResolve(req) {
485
+ // Here Promise.resolve().then() is used instead of new Promise() to prevent
486
+ // uncaught exception popping up in devtools
487
+ return Promise.resolve().then(function() {
488
+ if(!__webpack_require__.o(map, req)) {
489
+ var e = new Error("Cannot find module '" + req + "'");
490
+ e.code = 'MODULE_NOT_FOUND';
491
+ throw e;
492
+ }
493
+ return map[req];
494
+ });
495
+ }
496
+ webpackAsyncContext.keys = function webpackAsyncContextKeys() {
497
+ return Object.keys(map);
498
+ };
499
+ webpackAsyncContext.resolve = webpackAsyncContextResolve;
500
+ webpackAsyncContext.id = ${JSON.stringify(id)};
501
+ module.exports = webpackAsyncContext;`;
502
+ }
503
+
504
+ getLazyOnceSource(block, dependencies, id, runtimeTemplate) {
505
+ const promise = runtimeTemplate.blockPromise({
506
+ block,
507
+ message: "lazy-once context"
508
+ });
509
+ const map = this.getUserRequestMap(dependencies);
510
+ const fakeMap = this.getFakeMap(dependencies);
511
+ const thenFunction =
512
+ fakeMap !== 9
513
+ ? `function(id) {
514
+ ${this.getReturnModuleObjectSource(fakeMap)};
515
+ }`
516
+ : "__webpack_require__";
517
+
518
+ return `var map = ${JSON.stringify(map, null, "\t")};
519
+ ${this.getFakeMapInitStatement(fakeMap)}
520
+
521
+ function webpackAsyncContext(req) {
522
+ return webpackAsyncContextResolve(req).then(${thenFunction});
523
+ }
524
+ function webpackAsyncContextResolve(req) {
525
+ return ${promise}.then(function() {
526
+ if(!__webpack_require__.o(map, req)) {
527
+ var e = new Error("Cannot find module '" + req + "'");
528
+ e.code = 'MODULE_NOT_FOUND';
529
+ throw e;
530
+ }
531
+ return map[req];
532
+ });
533
+ }
534
+ webpackAsyncContext.keys = function webpackAsyncContextKeys() {
535
+ return Object.keys(map);
536
+ };
537
+ webpackAsyncContext.resolve = webpackAsyncContextResolve;
538
+ webpackAsyncContext.id = ${JSON.stringify(id)};
539
+ module.exports = webpackAsyncContext;`;
540
+ }
541
+
542
+ getLazySource(blocks, id) {
543
+ let hasMultipleOrNoChunks = false;
544
+ let hasNoChunk = true;
545
+ const fakeMap = this.getFakeMap(blocks.map(b => b.dependencies[0]));
546
+ const hasFakeMap = typeof fakeMap === "object";
547
+ const map = blocks
548
+ .filter(block => block.dependencies[0].module)
549
+ .map(block => {
550
+ const chunks = block.chunkGroup ? block.chunkGroup.chunks : [];
551
+ if (chunks.length > 0) {
552
+ hasNoChunk = false;
553
+ }
554
+ if (chunks.length !== 1) {
555
+ hasMultipleOrNoChunks = true;
556
+ }
557
+ return {
558
+ dependency: block.dependencies[0],
559
+ block: block,
560
+ userRequest: block.dependencies[0].userRequest,
561
+ chunks
562
+ };
563
+ })
564
+ .sort((a, b) => {
565
+ if (a.userRequest === b.userRequest) return 0;
566
+ return a.userRequest < b.userRequest ? -1 : 1;
567
+ })
568
+ .reduce((map, item) => {
569
+ const chunks = item.chunks;
570
+
571
+ if (hasNoChunk && !hasFakeMap) {
572
+ map[item.userRequest] = item.dependency.module.id;
573
+ } else {
574
+ const arrayStart = [item.dependency.module.id];
575
+ if (typeof fakeMap === "object") {
576
+ arrayStart.push(fakeMap[item.dependency.module.id]);
577
+ }
578
+ map[item.userRequest] = arrayStart.concat(
579
+ chunks.map(chunk => chunk.id)
580
+ );
581
+ }
582
+
583
+ return map;
584
+ }, Object.create(null));
585
+
586
+ const shortMode = hasNoChunk && !hasFakeMap;
587
+ const chunksStartPosition = hasFakeMap ? 2 : 1;
588
+ const requestPrefix = hasNoChunk
589
+ ? "Promise.resolve()"
590
+ : hasMultipleOrNoChunks
591
+ ? `Promise.all(ids.slice(${chunksStartPosition}).map(__webpack_require__.e))`
592
+ : `__webpack_require__.e(ids[${chunksStartPosition}])`;
593
+ const returnModuleObject = this.getReturnModuleObjectSource(
594
+ fakeMap,
595
+ shortMode ? "invalid" : "ids[1]"
596
+ );
597
+
598
+ const webpackAsyncContext =
599
+ requestPrefix === "Promise.resolve()"
600
+ ? `${shortMode ? "" : ""}
601
+ function webpackAsyncContext(req) {
602
+ return Promise.resolve().then(function() {
603
+ if(!__webpack_require__.o(map, req)) {
604
+ var e = new Error("Cannot find module '" + req + "'");
605
+ e.code = 'MODULE_NOT_FOUND';
606
+ throw e;
607
+ }
608
+
609
+ ${shortMode ? "var id = map[req];" : "var ids = map[req], id = ids[0];"}
610
+ ${returnModuleObject}
611
+ });
612
+ }`
613
+ : `function webpackAsyncContext(req) {
614
+ if(!__webpack_require__.o(map, req)) {
615
+ return Promise.resolve().then(function() {
616
+ var e = new Error("Cannot find module '" + req + "'");
617
+ e.code = 'MODULE_NOT_FOUND';
618
+ throw e;
619
+ });
620
+ }
621
+
622
+ var ids = map[req], id = ids[0];
623
+ return ${requestPrefix}.then(function() {
624
+ ${returnModuleObject}
625
+ });
626
+ }`;
627
+
628
+ return `var map = ${JSON.stringify(map, null, "\t")};
629
+ ${webpackAsyncContext}
630
+ webpackAsyncContext.keys = function webpackAsyncContextKeys() {
631
+ return Object.keys(map);
632
+ };
633
+ webpackAsyncContext.id = ${JSON.stringify(id)};
634
+ module.exports = webpackAsyncContext;`;
635
+ }
636
+
637
+ getSourceForEmptyContext(id) {
638
+ return `function webpackEmptyContext(req) {
639
+ var e = new Error("Cannot find module '" + req + "'");
640
+ e.code = 'MODULE_NOT_FOUND';
641
+ throw e;
642
+ }
643
+ webpackEmptyContext.keys = function() { return []; };
644
+ webpackEmptyContext.resolve = webpackEmptyContext;
645
+ module.exports = webpackEmptyContext;
646
+ webpackEmptyContext.id = ${JSON.stringify(id)};`;
647
+ }
648
+
649
+ getSourceForEmptyAsyncContext(id) {
650
+ return `function webpackEmptyAsyncContext(req) {
651
+ // Here Promise.resolve().then() is used instead of new Promise() to prevent
652
+ // uncaught exception popping up in devtools
653
+ return Promise.resolve().then(function() {
654
+ var e = new Error("Cannot find module '" + req + "'");
655
+ e.code = 'MODULE_NOT_FOUND';
656
+ throw e;
657
+ });
658
+ }
659
+ webpackEmptyAsyncContext.keys = function() { return []; };
660
+ webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
661
+ module.exports = webpackEmptyAsyncContext;
662
+ webpackEmptyAsyncContext.id = ${JSON.stringify(id)};`;
663
+ }
664
+
665
+ getSourceString(asyncMode, runtimeTemplate) {
666
+ if (asyncMode === "lazy") {
667
+ if (this.blocks && this.blocks.length > 0) {
668
+ return this.getLazySource(this.blocks, this.id);
669
+ }
670
+ return this.getSourceForEmptyAsyncContext(this.id);
671
+ }
672
+ if (asyncMode === "eager") {
673
+ if (this.dependencies && this.dependencies.length > 0) {
674
+ return this.getEagerSource(this.dependencies, this.id);
675
+ }
676
+ return this.getSourceForEmptyAsyncContext(this.id);
677
+ }
678
+ if (asyncMode === "lazy-once") {
679
+ const block = this.blocks[0];
680
+ if (block) {
681
+ return this.getLazyOnceSource(
682
+ block,
683
+ block.dependencies,
684
+ this.id,
685
+ runtimeTemplate
686
+ );
687
+ }
688
+ return this.getSourceForEmptyAsyncContext(this.id);
689
+ }
690
+ if (asyncMode === "async-weak") {
691
+ if (this.dependencies && this.dependencies.length > 0) {
692
+ return this.getAsyncWeakSource(this.dependencies, this.id);
693
+ }
694
+ return this.getSourceForEmptyAsyncContext(this.id);
695
+ }
696
+ if (asyncMode === "weak") {
697
+ if (this.dependencies && this.dependencies.length > 0) {
698
+ return this.getWeakSyncSource(this.dependencies, this.id);
699
+ }
700
+ }
701
+ if (this.dependencies && this.dependencies.length > 0) {
702
+ return this.getSyncSource(this.dependencies, this.id);
703
+ }
704
+ return this.getSourceForEmptyContext(this.id);
705
+ }
706
+
707
+ getSource(sourceString) {
708
+ if (this.useSourceMap) {
709
+ return new OriginalSource(sourceString, this.identifier());
710
+ }
711
+ return new RawSource(sourceString);
712
+ }
713
+
714
+ source(dependencyTemplates, runtimeTemplate) {
715
+ return this.getSource(
716
+ this.getSourceString(this.options.mode, runtimeTemplate)
717
+ );
718
+ }
719
+
720
+ size() {
721
+ // base penalty
722
+ const initialSize = 160;
723
+
724
+ // if we dont have dependencies we stop here.
725
+ return this.dependencies.reduce((size, dependency) => {
726
+ const element = /** @type {ContextElementDependency} */ (dependency);
727
+ return size + 5 + element.userRequest.length;
728
+ }, initialSize);
729
+ }
730
+ }
731
+
732
+ // TODO remove in webpack 5
733
+ Object.defineProperty(ContextModule.prototype, "recursive", {
734
+ configurable: false,
735
+ get: util.deprecate(
736
+ /**
737
+ * @deprecated
738
+ * @this {ContextModule}
739
+ * @returns {boolean} is recursive
740
+ */
741
+ function() {
742
+ return this.options.recursive;
743
+ },
744
+ "ContextModule.recursive has been moved to ContextModule.options.recursive"
745
+ ),
746
+ set: util.deprecate(
747
+ /**
748
+ * @deprecated
749
+ * @this {ContextModule}
750
+ * @param {boolean} value is recursive
751
+ * @returns {void}
752
+ */
753
+ function(value) {
754
+ this.options.recursive = value;
755
+ },
756
+ "ContextModule.recursive has been moved to ContextModule.options.recursive"
757
+ )
758
+ });
759
+
760
+ // TODO remove in webpack 5
761
+ Object.defineProperty(ContextModule.prototype, "regExp", {
762
+ configurable: false,
763
+ get: util.deprecate(
764
+ /**
765
+ * @deprecated
766
+ * @this {ContextModule}
767
+ * @returns {RegExp} regular expression
768
+ */
769
+ function() {
770
+ return this.options.regExp;
771
+ },
772
+ "ContextModule.regExp has been moved to ContextModule.options.regExp"
773
+ ),
774
+ set: util.deprecate(
775
+ /**
776
+ * @deprecated
777
+ * @this {ContextModule}
778
+ * @param {RegExp} value Regular expression
779
+ * @returns {void}
780
+ */
781
+ function(value) {
782
+ this.options.regExp = value;
783
+ },
784
+ "ContextModule.regExp has been moved to ContextModule.options.regExp"
785
+ )
786
+ });
787
+
788
+ // TODO remove in webpack 5
789
+ Object.defineProperty(ContextModule.prototype, "addon", {
790
+ configurable: false,
791
+ get: util.deprecate(
792
+ /**
793
+ * @deprecated
794
+ * @this {ContextModule}
795
+ * @returns {string} addon
796
+ */
797
+ function() {
798
+ return this.options.addon;
799
+ },
800
+ "ContextModule.addon has been moved to ContextModule.options.addon"
801
+ ),
802
+ set: util.deprecate(
803
+ /**
804
+ * @deprecated
805
+ * @this {ContextModule}
806
+ * @param {string} value addon
807
+ * @returns {void}
808
+ */
809
+ function(value) {
810
+ this.options.addon = value;
811
+ },
812
+ "ContextModule.addon has been moved to ContextModule.options.addon"
813
+ )
814
+ });
815
+
816
+ // TODO remove in webpack 5
817
+ Object.defineProperty(ContextModule.prototype, "async", {
818
+ configurable: false,
819
+ get: util.deprecate(
820
+ /**
821
+ * @deprecated
822
+ * @this {ContextModule}
823
+ * @returns {boolean} is async
824
+ */
825
+ function() {
826
+ return this.options.mode;
827
+ },
828
+ "ContextModule.async has been moved to ContextModule.options.mode"
829
+ ),
830
+ set: util.deprecate(
831
+ /**
832
+ * @deprecated
833
+ * @this {ContextModule}
834
+ * @param {ContextMode} value Context mode
835
+ * @returns {void}
836
+ */
837
+ function(value) {
838
+ this.options.mode = value;
839
+ },
840
+ "ContextModule.async has been moved to ContextModule.options.mode"
841
+ )
842
+ });
843
+
844
+ // TODO remove in webpack 5
845
+ Object.defineProperty(ContextModule.prototype, "chunkName", {
846
+ configurable: false,
847
+ get: util.deprecate(
848
+ /**
849
+ * @deprecated
850
+ * @this {ContextModule}
851
+ * @returns {string} chunk name
852
+ */
853
+ function() {
854
+ return this.options.chunkName;
855
+ },
856
+ "ContextModule.chunkName has been moved to ContextModule.options.chunkName"
857
+ ),
858
+ set: util.deprecate(
859
+ /**
860
+ * @deprecated
861
+ * @this {ContextModule}
862
+ * @param {string} value chunk name
863
+ * @returns {void}
864
+ */
865
+ function(value) {
866
+ this.options.chunkName = value;
867
+ },
868
+ "ContextModule.chunkName has been moved to ContextModule.options.chunkName"
869
+ )
870
+ });
871
+
872
+ module.exports = ContextModule;