@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,735 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const parseJson = require("json-parse-better-errors");
8
+ const asyncLib = require("neo-async");
9
+ const path = require("path");
10
+ const { Source } = require("webpack-sources");
11
+ const util = require("util");
12
+ const {
13
+ Tapable,
14
+ SyncHook,
15
+ SyncBailHook,
16
+ AsyncParallelHook,
17
+ AsyncSeriesHook
18
+ } = require("tapable");
19
+
20
+ const Compilation = require("./Compilation");
21
+ const Stats = require("./Stats");
22
+ const Watching = require("./Watching");
23
+ const NormalModuleFactory = require("./NormalModuleFactory");
24
+ const ContextModuleFactory = require("./ContextModuleFactory");
25
+ const ResolverFactory = require("./ResolverFactory");
26
+
27
+ const RequestShortener = require("./RequestShortener");
28
+ const { makePathsRelative } = require("./util/identifier");
29
+ const ConcurrentCompilationError = require("./ConcurrentCompilationError");
30
+ const { Logger } = require("./logging/Logger");
31
+
32
+ /** @typedef {import("../declarations/WebpackOptions").Entry} Entry */
33
+ /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
34
+
35
+ /**
36
+ * @typedef {Object} CompilationParams
37
+ * @property {NormalModuleFactory} normalModuleFactory
38
+ * @property {ContextModuleFactory} contextModuleFactory
39
+ * @property {Set<string>} compilationDependencies
40
+ */
41
+
42
+ class Compiler extends Tapable {
43
+ constructor(context) {
44
+ super();
45
+ this.hooks = {
46
+ /** @type {SyncBailHook<Compilation>} */
47
+ shouldEmit: new SyncBailHook(["compilation"]),
48
+ /** @type {AsyncSeriesHook<Stats>} */
49
+ done: new AsyncSeriesHook(["stats"]),
50
+ /** @type {AsyncSeriesHook<>} */
51
+ additionalPass: new AsyncSeriesHook([]),
52
+ /** @type {AsyncSeriesHook<Compiler>} */
53
+ beforeRun: new AsyncSeriesHook(["compiler"]),
54
+ /** @type {AsyncSeriesHook<Compiler>} */
55
+ run: new AsyncSeriesHook(["compiler"]),
56
+ /** @type {AsyncSeriesHook<Compilation>} */
57
+ emit: new AsyncSeriesHook(["compilation"]),
58
+ /** @type {AsyncSeriesHook<string, Buffer>} */
59
+ assetEmitted: new AsyncSeriesHook(["file", "content"]),
60
+ /** @type {AsyncSeriesHook<Compilation>} */
61
+ afterEmit: new AsyncSeriesHook(["compilation"]),
62
+
63
+ /** @type {SyncHook<Compilation, CompilationParams>} */
64
+ thisCompilation: new SyncHook(["compilation", "params"]),
65
+ /** @type {SyncHook<Compilation, CompilationParams>} */
66
+ compilation: new SyncHook(["compilation", "params"]),
67
+ /** @type {SyncHook<NormalModuleFactory>} */
68
+ normalModuleFactory: new SyncHook(["normalModuleFactory"]),
69
+ /** @type {SyncHook<ContextModuleFactory>} */
70
+ contextModuleFactory: new SyncHook(["contextModulefactory"]),
71
+
72
+ /** @type {AsyncSeriesHook<CompilationParams>} */
73
+ beforeCompile: new AsyncSeriesHook(["params"]),
74
+ /** @type {SyncHook<CompilationParams>} */
75
+ compile: new SyncHook(["params"]),
76
+ /** @type {AsyncParallelHook<Compilation>} */
77
+ make: new AsyncParallelHook(["compilation"]),
78
+ /** @type {AsyncSeriesHook<Compilation>} */
79
+ afterCompile: new AsyncSeriesHook(["compilation"]),
80
+
81
+ /** @type {AsyncSeriesHook<Compiler>} */
82
+ watchRun: new AsyncSeriesHook(["compiler"]),
83
+ /** @type {SyncHook<Error>} */
84
+ failed: new SyncHook(["error"]),
85
+ /** @type {SyncHook<string, string>} */
86
+ invalid: new SyncHook(["filename", "changeTime"]),
87
+ /** @type {SyncHook} */
88
+ watchClose: new SyncHook([]),
89
+
90
+ /** @type {SyncBailHook<string, string, any[]>} */
91
+ infrastructureLog: new SyncBailHook(["origin", "type", "args"]),
92
+
93
+ // TODO the following hooks are weirdly located here
94
+ // TODO move them for webpack 5
95
+ /** @type {SyncHook} */
96
+ environment: new SyncHook([]),
97
+ /** @type {SyncHook} */
98
+ afterEnvironment: new SyncHook([]),
99
+ /** @type {SyncHook<Compiler>} */
100
+ afterPlugins: new SyncHook(["compiler"]),
101
+ /** @type {SyncHook<Compiler>} */
102
+ afterResolvers: new SyncHook(["compiler"]),
103
+ /** @type {SyncBailHook<string, Entry>} */
104
+ entryOption: new SyncBailHook(["context", "entry"])
105
+ };
106
+ // TODO webpack 5 remove this
107
+ this.hooks.infrastructurelog = this.hooks.infrastructureLog;
108
+
109
+ this._pluginCompat.tap("Compiler", options => {
110
+ switch (options.name) {
111
+ case "additional-pass":
112
+ case "before-run":
113
+ case "run":
114
+ case "emit":
115
+ case "after-emit":
116
+ case "before-compile":
117
+ case "make":
118
+ case "after-compile":
119
+ case "watch-run":
120
+ options.async = true;
121
+ break;
122
+ }
123
+ });
124
+
125
+ /** @type {string=} */
126
+ this.name = undefined;
127
+ /** @type {Compilation=} */
128
+ this.parentCompilation = undefined;
129
+ /** @type {string} */
130
+ this.outputPath = "";
131
+
132
+ this.outputFileSystem = null;
133
+ this.inputFileSystem = null;
134
+
135
+ /** @type {string|null} */
136
+ this.recordsInputPath = null;
137
+ /** @type {string|null} */
138
+ this.recordsOutputPath = null;
139
+ this.records = {};
140
+ this.removedFiles = new Set();
141
+ /** @type {Map<string, number>} */
142
+ this.fileTimestamps = new Map();
143
+ /** @type {Map<string, number>} */
144
+ this.contextTimestamps = new Map();
145
+ /** @type {ResolverFactory} */
146
+ this.resolverFactory = new ResolverFactory();
147
+
148
+ this.infrastructureLogger = undefined;
149
+
150
+ // TODO remove in webpack 5
151
+ this.resolvers = {
152
+ normal: {
153
+ plugins: util.deprecate((hook, fn) => {
154
+ this.resolverFactory.plugin("resolver normal", resolver => {
155
+ resolver.plugin(hook, fn);
156
+ });
157
+ }, "webpack: Using compiler.resolvers.normal is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver normal", resolver => {\n resolver.plugin(/* … */);\n}); instead.'),
158
+ apply: util.deprecate((...args) => {
159
+ this.resolverFactory.plugin("resolver normal", resolver => {
160
+ resolver.apply(...args);
161
+ });
162
+ }, "webpack: Using compiler.resolvers.normal is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver normal", resolver => {\n resolver.apply(/* … */);\n}); instead.')
163
+ },
164
+ loader: {
165
+ plugins: util.deprecate((hook, fn) => {
166
+ this.resolverFactory.plugin("resolver loader", resolver => {
167
+ resolver.plugin(hook, fn);
168
+ });
169
+ }, "webpack: Using compiler.resolvers.loader is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver loader", resolver => {\n resolver.plugin(/* … */);\n}); instead.'),
170
+ apply: util.deprecate((...args) => {
171
+ this.resolverFactory.plugin("resolver loader", resolver => {
172
+ resolver.apply(...args);
173
+ });
174
+ }, "webpack: Using compiler.resolvers.loader is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver loader", resolver => {\n resolver.apply(/* … */);\n}); instead.')
175
+ },
176
+ context: {
177
+ plugins: util.deprecate((hook, fn) => {
178
+ this.resolverFactory.plugin("resolver context", resolver => {
179
+ resolver.plugin(hook, fn);
180
+ });
181
+ }, "webpack: Using compiler.resolvers.context is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver context", resolver => {\n resolver.plugin(/* … */);\n}); instead.'),
182
+ apply: util.deprecate((...args) => {
183
+ this.resolverFactory.plugin("resolver context", resolver => {
184
+ resolver.apply(...args);
185
+ });
186
+ }, "webpack: Using compiler.resolvers.context is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver context", resolver => {\n resolver.apply(/* … */);\n}); instead.')
187
+ }
188
+ };
189
+
190
+ /** @type {WebpackOptions} */
191
+ this.options = /** @type {WebpackOptions} */ ({});
192
+
193
+ this.context = context;
194
+
195
+ this.requestShortener = new RequestShortener(context);
196
+
197
+ /** @type {boolean} */
198
+ this.running = false;
199
+
200
+ /** @type {boolean} */
201
+ this.watchMode = false;
202
+
203
+ /** @private @type {WeakMap<Source, { sizeOnlySource: SizeOnlySource, writtenTo: Map<string, number> }>} */
204
+ this._assetEmittingSourceCache = new WeakMap();
205
+ /** @private @type {Map<string, number>} */
206
+ this._assetEmittingWrittenFiles = new Map();
207
+ }
208
+
209
+ /**
210
+ * @param {string | (function(): string)} name name of the logger, or function called once to get the logger name
211
+ * @returns {Logger} a logger with that name
212
+ */
213
+ getInfrastructureLogger(name) {
214
+ if (!name) {
215
+ throw new TypeError(
216
+ "Compiler.getInfrastructureLogger(name) called without a name"
217
+ );
218
+ }
219
+ return new Logger((type, args) => {
220
+ if (typeof name === "function") {
221
+ name = name();
222
+ if (!name) {
223
+ throw new TypeError(
224
+ "Compiler.getInfrastructureLogger(name) called with a function not returning a name"
225
+ );
226
+ }
227
+ }
228
+ if (this.hooks.infrastructureLog.call(name, type, args) === undefined) {
229
+ if (this.infrastructureLogger !== undefined) {
230
+ this.infrastructureLogger(name, type, args);
231
+ }
232
+ }
233
+ });
234
+ }
235
+
236
+ watch(watchOptions, handler) {
237
+ if (this.running) return handler(new ConcurrentCompilationError());
238
+
239
+ this.running = true;
240
+ this.watchMode = true;
241
+ this.fileTimestamps = new Map();
242
+ this.contextTimestamps = new Map();
243
+ this.removedFiles = new Set();
244
+ return new Watching(this, watchOptions, handler);
245
+ }
246
+
247
+ run(callback) {
248
+ if (this.running) return callback(new ConcurrentCompilationError());
249
+
250
+ const finalCallback = (err, stats) => {
251
+ this.running = false;
252
+
253
+ if (err) {
254
+ this.hooks.failed.call(err);
255
+ }
256
+
257
+ if (callback !== undefined) return callback(err, stats);
258
+ };
259
+
260
+ const startTime = Date.now();
261
+
262
+ this.running = true;
263
+
264
+ const onCompiled = (err, compilation) => {
265
+ if (err) return finalCallback(err);
266
+
267
+ if (this.hooks.shouldEmit.call(compilation) === false) {
268
+ const stats = new Stats(compilation);
269
+ stats.startTime = startTime;
270
+ stats.endTime = Date.now();
271
+ this.hooks.done.callAsync(stats, err => {
272
+ if (err) return finalCallback(err);
273
+ return finalCallback(null, stats);
274
+ });
275
+ return;
276
+ }
277
+
278
+ this.emitAssets(compilation, err => {
279
+ if (err) return finalCallback(err);
280
+
281
+ if (compilation.hooks.needAdditionalPass.call()) {
282
+ compilation.needAdditionalPass = true;
283
+
284
+ const stats = new Stats(compilation);
285
+ stats.startTime = startTime;
286
+ stats.endTime = Date.now();
287
+ this.hooks.done.callAsync(stats, err => {
288
+ if (err) return finalCallback(err);
289
+
290
+ this.hooks.additionalPass.callAsync(err => {
291
+ if (err) return finalCallback(err);
292
+ this.compile(onCompiled);
293
+ });
294
+ });
295
+ return;
296
+ }
297
+
298
+ this.emitRecords(err => {
299
+ if (err) return finalCallback(err);
300
+
301
+ const stats = new Stats(compilation);
302
+ stats.startTime = startTime;
303
+ stats.endTime = Date.now();
304
+ this.hooks.done.callAsync(stats, err => {
305
+ if (err) return finalCallback(err);
306
+ return finalCallback(null, stats);
307
+ });
308
+ });
309
+ });
310
+ };
311
+
312
+ this.hooks.beforeRun.callAsync(this, err => {
313
+ if (err) return finalCallback(err);
314
+
315
+ this.hooks.run.callAsync(this, err => {
316
+ if (err) return finalCallback(err);
317
+
318
+ this.readRecords(err => {
319
+ if (err) return finalCallback(err);
320
+
321
+ this.compile(onCompiled);
322
+ });
323
+ });
324
+ });
325
+ }
326
+
327
+ runAsChild(callback) {
328
+ this.compile((err, compilation) => {
329
+ if (err) return callback(err);
330
+
331
+ this.parentCompilation.children.push(compilation);
332
+ for (const { name, source, info } of compilation.getAssets()) {
333
+ this.parentCompilation.emitAsset(name, source, info);
334
+ }
335
+
336
+ const entries = Array.from(
337
+ compilation.entrypoints.values(),
338
+ ep => ep.chunks
339
+ ).reduce((array, chunks) => {
340
+ return array.concat(chunks);
341
+ }, []);
342
+
343
+ return callback(null, entries, compilation);
344
+ });
345
+ }
346
+
347
+ purgeInputFileSystem() {
348
+ if (this.inputFileSystem && this.inputFileSystem.purge) {
349
+ this.inputFileSystem.purge();
350
+ }
351
+ }
352
+
353
+ emitAssets(compilation, callback) {
354
+ let outputPath;
355
+ const emitFiles = err => {
356
+ if (err) return callback(err);
357
+
358
+ asyncLib.forEachLimit(
359
+ compilation.getAssets(),
360
+ 15,
361
+ ({ name: file, source }, callback) => {
362
+ let targetFile = file;
363
+ const queryStringIdx = targetFile.indexOf("?");
364
+ if (queryStringIdx >= 0) {
365
+ targetFile = targetFile.substr(0, queryStringIdx);
366
+ }
367
+
368
+ const writeOut = err => {
369
+ if (err) return callback(err);
370
+ const targetPath = this.outputFileSystem.join(
371
+ outputPath,
372
+ targetFile
373
+ );
374
+ // TODO webpack 5 remove futureEmitAssets option and make it on by default
375
+ if (this.options.output.futureEmitAssets) {
376
+ // check if the target file has already been written by this Compiler
377
+ const targetFileGeneration = this._assetEmittingWrittenFiles.get(
378
+ targetPath
379
+ );
380
+
381
+ // create an cache entry for this Source if not already existing
382
+ let cacheEntry = this._assetEmittingSourceCache.get(source);
383
+ if (cacheEntry === undefined) {
384
+ cacheEntry = {
385
+ sizeOnlySource: undefined,
386
+ writtenTo: new Map()
387
+ };
388
+ this._assetEmittingSourceCache.set(source, cacheEntry);
389
+ }
390
+
391
+ // if the target file has already been written
392
+ if (targetFileGeneration !== undefined) {
393
+ // check if the Source has been written to this target file
394
+ const writtenGeneration = cacheEntry.writtenTo.get(targetPath);
395
+ if (writtenGeneration === targetFileGeneration) {
396
+ // if yes, we skip writing the file
397
+ // as it's already there
398
+ // (we assume one doesn't remove files while the Compiler is running)
399
+
400
+ compilation.updateAsset(file, cacheEntry.sizeOnlySource, {
401
+ size: cacheEntry.sizeOnlySource.size()
402
+ });
403
+
404
+ return callback();
405
+ }
406
+ }
407
+
408
+ // TODO webpack 5: if info.immutable check if file already exists in output
409
+ // skip emitting if it's already there
410
+
411
+ // get the binary (Buffer) content from the Source
412
+ /** @type {Buffer} */
413
+ let content;
414
+ if (typeof source.buffer === "function") {
415
+ content = source.buffer();
416
+ } else {
417
+ const bufferOrString = source.source();
418
+ if (Buffer.isBuffer(bufferOrString)) {
419
+ content = bufferOrString;
420
+ } else {
421
+ content = Buffer.from(bufferOrString, "utf8");
422
+ }
423
+ }
424
+
425
+ // Create a replacement resource which only allows to ask for size
426
+ // This allows to GC all memory allocated by the Source
427
+ // (expect when the Source is stored in any other cache)
428
+ cacheEntry.sizeOnlySource = new SizeOnlySource(content.length);
429
+ compilation.updateAsset(file, cacheEntry.sizeOnlySource, {
430
+ size: content.length
431
+ });
432
+
433
+ // Write the file to output file system
434
+ this.outputFileSystem.writeFile(targetPath, content, err => {
435
+ if (err) return callback(err);
436
+
437
+ // information marker that the asset has been emitted
438
+ compilation.emittedAssets.add(file);
439
+
440
+ // cache the information that the Source has been written to that location
441
+ const newGeneration =
442
+ targetFileGeneration === undefined
443
+ ? 1
444
+ : targetFileGeneration + 1;
445
+ cacheEntry.writtenTo.set(targetPath, newGeneration);
446
+ this._assetEmittingWrittenFiles.set(targetPath, newGeneration);
447
+ this.hooks.assetEmitted.callAsync(file, content, callback);
448
+ });
449
+ } else {
450
+ if (source.existsAt === targetPath) {
451
+ source.emitted = false;
452
+ return callback();
453
+ }
454
+ let content = source.source();
455
+
456
+ if (!Buffer.isBuffer(content)) {
457
+ content = Buffer.from(content, "utf8");
458
+ }
459
+
460
+ source.existsAt = targetPath;
461
+ source.emitted = true;
462
+ this.outputFileSystem.writeFile(targetPath, content, err => {
463
+ if (err) return callback(err);
464
+ this.hooks.assetEmitted.callAsync(file, content, callback);
465
+ });
466
+ }
467
+ };
468
+
469
+ if (targetFile.match(/\/|\\/)) {
470
+ const dir = path.dirname(targetFile);
471
+ this.outputFileSystem.mkdirp(
472
+ this.outputFileSystem.join(outputPath, dir),
473
+ writeOut
474
+ );
475
+ } else {
476
+ writeOut();
477
+ }
478
+ },
479
+ err => {
480
+ if (err) return callback(err);
481
+
482
+ this.hooks.afterEmit.callAsync(compilation, err => {
483
+ if (err) return callback(err);
484
+
485
+ return callback();
486
+ });
487
+ }
488
+ );
489
+ };
490
+
491
+ this.hooks.emit.callAsync(compilation, err => {
492
+ if (err) return callback(err);
493
+ outputPath = compilation.getPath(this.outputPath);
494
+ this.outputFileSystem.mkdirp(outputPath, emitFiles);
495
+ });
496
+ }
497
+
498
+ emitRecords(callback) {
499
+ if (!this.recordsOutputPath) return callback();
500
+ const idx1 = this.recordsOutputPath.lastIndexOf("/");
501
+ const idx2 = this.recordsOutputPath.lastIndexOf("\\");
502
+ let recordsOutputPathDirectory = null;
503
+ if (idx1 > idx2) {
504
+ recordsOutputPathDirectory = this.recordsOutputPath.substr(0, idx1);
505
+ } else if (idx1 < idx2) {
506
+ recordsOutputPathDirectory = this.recordsOutputPath.substr(0, idx2);
507
+ }
508
+
509
+ const writeFile = () => {
510
+ this.outputFileSystem.writeFile(
511
+ this.recordsOutputPath,
512
+ JSON.stringify(this.records, undefined, 2),
513
+ callback
514
+ );
515
+ };
516
+
517
+ if (!recordsOutputPathDirectory) {
518
+ return writeFile();
519
+ }
520
+ this.outputFileSystem.mkdirp(recordsOutputPathDirectory, err => {
521
+ if (err) return callback(err);
522
+ writeFile();
523
+ });
524
+ }
525
+
526
+ readRecords(callback) {
527
+ if (!this.recordsInputPath) {
528
+ this.records = {};
529
+ return callback();
530
+ }
531
+ this.inputFileSystem.stat(this.recordsInputPath, err => {
532
+ // It doesn't exist
533
+ // We can ignore this.
534
+ if (err) return callback();
535
+
536
+ this.inputFileSystem.readFile(this.recordsInputPath, (err, content) => {
537
+ if (err) return callback(err);
538
+
539
+ try {
540
+ this.records = parseJson(content.toString("utf-8"));
541
+ } catch (e) {
542
+ e.message = "Cannot parse records: " + e.message;
543
+ return callback(e);
544
+ }
545
+
546
+ return callback();
547
+ });
548
+ });
549
+ }
550
+
551
+ createChildCompiler(
552
+ compilation,
553
+ compilerName,
554
+ compilerIndex,
555
+ outputOptions,
556
+ plugins
557
+ ) {
558
+ const childCompiler = new Compiler(this.context);
559
+ if (Array.isArray(plugins)) {
560
+ for (const plugin of plugins) {
561
+ plugin.apply(childCompiler);
562
+ }
563
+ }
564
+ for (const name in this.hooks) {
565
+ if (
566
+ ![
567
+ "make",
568
+ "compile",
569
+ "emit",
570
+ "afterEmit",
571
+ "invalid",
572
+ "done",
573
+ "thisCompilation"
574
+ ].includes(name)
575
+ ) {
576
+ if (childCompiler.hooks[name]) {
577
+ childCompiler.hooks[name].taps = this.hooks[name].taps.slice();
578
+ }
579
+ }
580
+ }
581
+ childCompiler.name = compilerName;
582
+ childCompiler.outputPath = this.outputPath;
583
+ childCompiler.inputFileSystem = this.inputFileSystem;
584
+ childCompiler.outputFileSystem = null;
585
+ childCompiler.resolverFactory = this.resolverFactory;
586
+ childCompiler.fileTimestamps = this.fileTimestamps;
587
+ childCompiler.contextTimestamps = this.contextTimestamps;
588
+
589
+ const relativeCompilerName = makePathsRelative(this.context, compilerName);
590
+ if (!this.records[relativeCompilerName]) {
591
+ this.records[relativeCompilerName] = [];
592
+ }
593
+ if (this.records[relativeCompilerName][compilerIndex]) {
594
+ childCompiler.records = this.records[relativeCompilerName][compilerIndex];
595
+ } else {
596
+ this.records[relativeCompilerName].push((childCompiler.records = {}));
597
+ }
598
+
599
+ childCompiler.options = Object.create(this.options);
600
+ childCompiler.options.output = Object.create(childCompiler.options.output);
601
+ for (const name in outputOptions) {
602
+ childCompiler.options.output[name] = outputOptions[name];
603
+ }
604
+ childCompiler.parentCompilation = compilation;
605
+
606
+ compilation.hooks.childCompiler.call(
607
+ childCompiler,
608
+ compilerName,
609
+ compilerIndex
610
+ );
611
+
612
+ return childCompiler;
613
+ }
614
+
615
+ isChild() {
616
+ return !!this.parentCompilation;
617
+ }
618
+
619
+ createCompilation() {
620
+ return new Compilation(this);
621
+ }
622
+
623
+ newCompilation(params) {
624
+ const compilation = this.createCompilation();
625
+ compilation.fileTimestamps = this.fileTimestamps;
626
+ compilation.contextTimestamps = this.contextTimestamps;
627
+ compilation.name = this.name;
628
+ compilation.records = this.records;
629
+ compilation.compilationDependencies = params.compilationDependencies;
630
+ this.hooks.thisCompilation.call(compilation, params);
631
+ this.hooks.compilation.call(compilation, params);
632
+ return compilation;
633
+ }
634
+
635
+ createNormalModuleFactory() {
636
+ const normalModuleFactory = new NormalModuleFactory(
637
+ this.options.context,
638
+ this.resolverFactory,
639
+ this.options.module || {}
640
+ );
641
+ this.hooks.normalModuleFactory.call(normalModuleFactory);
642
+ return normalModuleFactory;
643
+ }
644
+
645
+ createContextModuleFactory() {
646
+ const contextModuleFactory = new ContextModuleFactory(this.resolverFactory);
647
+ this.hooks.contextModuleFactory.call(contextModuleFactory);
648
+ return contextModuleFactory;
649
+ }
650
+
651
+ newCompilationParams() {
652
+ const params = {
653
+ normalModuleFactory: this.createNormalModuleFactory(),
654
+ contextModuleFactory: this.createContextModuleFactory(),
655
+ compilationDependencies: new Set()
656
+ };
657
+ return params;
658
+ }
659
+
660
+ compile(callback) {
661
+ const params = this.newCompilationParams();
662
+ this.hooks.beforeCompile.callAsync(params, err => {
663
+ if (err) return callback(err);
664
+
665
+ this.hooks.compile.call(params);
666
+
667
+ const compilation = this.newCompilation(params);
668
+
669
+ this.hooks.make.callAsync(compilation, err => {
670
+ if (err) return callback(err);
671
+
672
+ compilation.finish(err => {
673
+ if (err) return callback(err);
674
+
675
+ compilation.seal(err => {
676
+ if (err) return callback(err);
677
+
678
+ this.hooks.afterCompile.callAsync(compilation, err => {
679
+ if (err) return callback(err);
680
+
681
+ return callback(null, compilation);
682
+ });
683
+ });
684
+ });
685
+ });
686
+ });
687
+ }
688
+ }
689
+
690
+ module.exports = Compiler;
691
+
692
+ class SizeOnlySource extends Source {
693
+ constructor(size) {
694
+ super();
695
+ this._size = size;
696
+ }
697
+
698
+ _error() {
699
+ return new Error(
700
+ "Content and Map of this Source is no longer available (only size() is supported)"
701
+ );
702
+ }
703
+
704
+ size() {
705
+ return this._size;
706
+ }
707
+
708
+ /**
709
+ * @param {any} options options
710
+ * @returns {string} the source
711
+ */
712
+ source(options) {
713
+ throw this._error();
714
+ }
715
+
716
+ node() {
717
+ throw this._error();
718
+ }
719
+
720
+ listMap() {
721
+ throw this._error();
722
+ }
723
+
724
+ map() {
725
+ throw this._error();
726
+ }
727
+
728
+ listNode() {
729
+ throw this._error();
730
+ }
731
+
732
+ updateHash() {
733
+ throw this._error();
734
+ }
735
+ }