@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,425 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const { SyncBailHook } = require("tapable");
8
+ const { RawSource } = require("webpack-sources");
9
+ const Template = require("./Template");
10
+ const ModuleHotAcceptDependency = require("./dependencies/ModuleHotAcceptDependency");
11
+ const ModuleHotDeclineDependency = require("./dependencies/ModuleHotDeclineDependency");
12
+ const ConstDependency = require("./dependencies/ConstDependency");
13
+ const NullFactory = require("./NullFactory");
14
+ const ParserHelpers = require("./ParserHelpers");
15
+
16
+ module.exports = class HotModuleReplacementPlugin {
17
+ constructor(options) {
18
+ this.options = options || {};
19
+ this.multiStep = this.options.multiStep;
20
+ this.fullBuildTimeout = this.options.fullBuildTimeout || 200;
21
+ this.requestTimeout = this.options.requestTimeout || 10000;
22
+ }
23
+
24
+ apply(compiler) {
25
+ const multiStep = this.multiStep;
26
+ const fullBuildTimeout = this.fullBuildTimeout;
27
+ const requestTimeout = this.requestTimeout;
28
+ const hotUpdateChunkFilename =
29
+ compiler.options.output.hotUpdateChunkFilename;
30
+ const hotUpdateMainFilename = compiler.options.output.hotUpdateMainFilename;
31
+ compiler.hooks.additionalPass.tapAsync(
32
+ "HotModuleReplacementPlugin",
33
+ callback => {
34
+ if (multiStep) return setTimeout(callback, fullBuildTimeout);
35
+ return callback();
36
+ }
37
+ );
38
+
39
+ const addParserPlugins = (parser, parserOptions) => {
40
+ parser.hooks.expression
41
+ .for("__webpack_hash__")
42
+ .tap(
43
+ "HotModuleReplacementPlugin",
44
+ ParserHelpers.toConstantDependencyWithWebpackRequire(
45
+ parser,
46
+ "__webpack_require__.h()"
47
+ )
48
+ );
49
+ parser.hooks.evaluateTypeof
50
+ .for("__webpack_hash__")
51
+ .tap(
52
+ "HotModuleReplacementPlugin",
53
+ ParserHelpers.evaluateToString("string")
54
+ );
55
+ parser.hooks.evaluateIdentifier.for("module.hot").tap(
56
+ {
57
+ name: "HotModuleReplacementPlugin",
58
+ before: "NodeStuffPlugin"
59
+ },
60
+ expr => {
61
+ return ParserHelpers.evaluateToIdentifier(
62
+ "module.hot",
63
+ !!parser.state.compilation.hotUpdateChunkTemplate
64
+ )(expr);
65
+ }
66
+ );
67
+ // TODO webpack 5: refactor this, no custom hooks
68
+ if (!parser.hooks.hotAcceptCallback) {
69
+ parser.hooks.hotAcceptCallback = new SyncBailHook([
70
+ "expression",
71
+ "requests"
72
+ ]);
73
+ }
74
+ if (!parser.hooks.hotAcceptWithoutCallback) {
75
+ parser.hooks.hotAcceptWithoutCallback = new SyncBailHook([
76
+ "expression",
77
+ "requests"
78
+ ]);
79
+ }
80
+ parser.hooks.call
81
+ .for("module.hot.accept")
82
+ .tap("HotModuleReplacementPlugin", expr => {
83
+ if (!parser.state.compilation.hotUpdateChunkTemplate) {
84
+ return false;
85
+ }
86
+ if (expr.arguments.length >= 1) {
87
+ const arg = parser.evaluateExpression(expr.arguments[0]);
88
+ let params = [];
89
+ let requests = [];
90
+ if (arg.isString()) {
91
+ params = [arg];
92
+ } else if (arg.isArray()) {
93
+ params = arg.items.filter(param => param.isString());
94
+ }
95
+ if (params.length > 0) {
96
+ params.forEach((param, idx) => {
97
+ const request = param.string;
98
+ const dep = new ModuleHotAcceptDependency(request, param.range);
99
+ dep.optional = true;
100
+ dep.loc = Object.create(expr.loc);
101
+ dep.loc.index = idx;
102
+ parser.state.module.addDependency(dep);
103
+ requests.push(request);
104
+ });
105
+ if (expr.arguments.length > 1) {
106
+ parser.hooks.hotAcceptCallback.call(
107
+ expr.arguments[1],
108
+ requests
109
+ );
110
+ parser.walkExpression(expr.arguments[1]); // other args are ignored
111
+ return true;
112
+ } else {
113
+ parser.hooks.hotAcceptWithoutCallback.call(expr, requests);
114
+ return true;
115
+ }
116
+ }
117
+ }
118
+ });
119
+ parser.hooks.call
120
+ .for("module.hot.decline")
121
+ .tap("HotModuleReplacementPlugin", expr => {
122
+ if (!parser.state.compilation.hotUpdateChunkTemplate) {
123
+ return false;
124
+ }
125
+ if (expr.arguments.length === 1) {
126
+ const arg = parser.evaluateExpression(expr.arguments[0]);
127
+ let params = [];
128
+ if (arg.isString()) {
129
+ params = [arg];
130
+ } else if (arg.isArray()) {
131
+ params = arg.items.filter(param => param.isString());
132
+ }
133
+ params.forEach((param, idx) => {
134
+ const dep = new ModuleHotDeclineDependency(
135
+ param.string,
136
+ param.range
137
+ );
138
+ dep.optional = true;
139
+ dep.loc = Object.create(expr.loc);
140
+ dep.loc.index = idx;
141
+ parser.state.module.addDependency(dep);
142
+ });
143
+ }
144
+ });
145
+ parser.hooks.expression
146
+ .for("module.hot")
147
+ .tap("HotModuleReplacementPlugin", ParserHelpers.skipTraversal);
148
+ };
149
+
150
+ compiler.hooks.compilation.tap(
151
+ "HotModuleReplacementPlugin",
152
+ (compilation, { normalModuleFactory }) => {
153
+ // This applies the HMR plugin only to the targeted compiler
154
+ // It should not affect child compilations
155
+ if (compilation.compiler !== compiler) return;
156
+
157
+ const hotUpdateChunkTemplate = compilation.hotUpdateChunkTemplate;
158
+ if (!hotUpdateChunkTemplate) return;
159
+
160
+ compilation.dependencyFactories.set(ConstDependency, new NullFactory());
161
+ compilation.dependencyTemplates.set(
162
+ ConstDependency,
163
+ new ConstDependency.Template()
164
+ );
165
+
166
+ compilation.dependencyFactories.set(
167
+ ModuleHotAcceptDependency,
168
+ normalModuleFactory
169
+ );
170
+ compilation.dependencyTemplates.set(
171
+ ModuleHotAcceptDependency,
172
+ new ModuleHotAcceptDependency.Template()
173
+ );
174
+
175
+ compilation.dependencyFactories.set(
176
+ ModuleHotDeclineDependency,
177
+ normalModuleFactory
178
+ );
179
+ compilation.dependencyTemplates.set(
180
+ ModuleHotDeclineDependency,
181
+ new ModuleHotDeclineDependency.Template()
182
+ );
183
+
184
+ compilation.hooks.record.tap(
185
+ "HotModuleReplacementPlugin",
186
+ (compilation, records) => {
187
+ if (records.hash === compilation.hash) return;
188
+ records.hash = compilation.hash;
189
+ records.moduleHashs = {};
190
+ for (const module of compilation.modules) {
191
+ const identifier = module.identifier();
192
+ records.moduleHashs[identifier] = module.hash;
193
+ }
194
+ records.chunkHashs = {};
195
+ for (const chunk of compilation.chunks) {
196
+ records.chunkHashs[chunk.id] = chunk.hash;
197
+ }
198
+ records.chunkModuleIds = {};
199
+ for (const chunk of compilation.chunks) {
200
+ records.chunkModuleIds[chunk.id] = Array.from(
201
+ chunk.modulesIterable,
202
+ m => m.id
203
+ );
204
+ }
205
+ }
206
+ );
207
+ let initialPass = false;
208
+ let recompilation = false;
209
+ compilation.hooks.afterHash.tap("HotModuleReplacementPlugin", () => {
210
+ let records = compilation.records;
211
+ if (!records) {
212
+ initialPass = true;
213
+ return;
214
+ }
215
+ if (!records.hash) initialPass = true;
216
+ const preHash = records.preHash || "x";
217
+ const prepreHash = records.prepreHash || "x";
218
+ if (preHash === compilation.hash) {
219
+ recompilation = true;
220
+ compilation.modifyHash(prepreHash);
221
+ return;
222
+ }
223
+ records.prepreHash = records.hash || "x";
224
+ records.preHash = compilation.hash;
225
+ compilation.modifyHash(records.prepreHash);
226
+ });
227
+ compilation.hooks.shouldGenerateChunkAssets.tap(
228
+ "HotModuleReplacementPlugin",
229
+ () => {
230
+ if (multiStep && !recompilation && !initialPass) return false;
231
+ }
232
+ );
233
+ compilation.hooks.needAdditionalPass.tap(
234
+ "HotModuleReplacementPlugin",
235
+ () => {
236
+ if (multiStep && !recompilation && !initialPass) return true;
237
+ }
238
+ );
239
+ compilation.hooks.additionalChunkAssets.tap(
240
+ "HotModuleReplacementPlugin",
241
+ () => {
242
+ const records = compilation.records;
243
+ if (records.hash === compilation.hash) return;
244
+ if (
245
+ !records.moduleHashs ||
246
+ !records.chunkHashs ||
247
+ !records.chunkModuleIds
248
+ )
249
+ return;
250
+ for (const module of compilation.modules) {
251
+ const identifier = module.identifier();
252
+ let hash = module.hash;
253
+ module.hotUpdate = records.moduleHashs[identifier] !== hash;
254
+ }
255
+ const hotUpdateMainContent = {
256
+ h: compilation.hash,
257
+ c: {}
258
+ };
259
+ for (const key of Object.keys(records.chunkHashs)) {
260
+ const chunkId = isNaN(+key) ? key : +key;
261
+ const currentChunk = compilation.chunks.find(
262
+ chunk => `${chunk.id}` === key
263
+ );
264
+ if (currentChunk) {
265
+ const newModules = currentChunk
266
+ .getModules()
267
+ .filter(module => module.hotUpdate);
268
+ const allModules = new Set();
269
+ for (const module of currentChunk.modulesIterable) {
270
+ allModules.add(module.id);
271
+ }
272
+ const removedModules = records.chunkModuleIds[chunkId].filter(
273
+ id => !allModules.has(id)
274
+ );
275
+ if (newModules.length > 0 || removedModules.length > 0) {
276
+ const source = hotUpdateChunkTemplate.render(
277
+ chunkId,
278
+ newModules,
279
+ removedModules,
280
+ compilation.hash,
281
+ compilation.moduleTemplates.javascript,
282
+ compilation.dependencyTemplates
283
+ );
284
+ const {
285
+ path: filename,
286
+ info: assetInfo
287
+ } = compilation.getPathWithInfo(hotUpdateChunkFilename, {
288
+ hash: records.hash,
289
+ chunk: currentChunk
290
+ });
291
+ compilation.additionalChunkAssets.push(filename);
292
+ compilation.emitAsset(
293
+ filename,
294
+ source,
295
+ Object.assign({ hotModuleReplacement: true }, assetInfo)
296
+ );
297
+ hotUpdateMainContent.c[chunkId] = true;
298
+ currentChunk.files.push(filename);
299
+ compilation.hooks.chunkAsset.call(currentChunk, filename);
300
+ }
301
+ } else {
302
+ hotUpdateMainContent.c[chunkId] = false;
303
+ }
304
+ }
305
+ const source = new RawSource(JSON.stringify(hotUpdateMainContent));
306
+ const {
307
+ path: filename,
308
+ info: assetInfo
309
+ } = compilation.getPathWithInfo(hotUpdateMainFilename, {
310
+ hash: records.hash
311
+ });
312
+ compilation.emitAsset(
313
+ filename,
314
+ source,
315
+ Object.assign({ hotModuleReplacement: true }, assetInfo)
316
+ );
317
+ }
318
+ );
319
+
320
+ const mainTemplate = compilation.mainTemplate;
321
+
322
+ mainTemplate.hooks.hash.tap("HotModuleReplacementPlugin", hash => {
323
+ hash.update("HotMainTemplateDecorator");
324
+ });
325
+
326
+ mainTemplate.hooks.moduleRequire.tap(
327
+ "HotModuleReplacementPlugin",
328
+ (_, chunk, hash, varModuleId) => {
329
+ return `hotCreateRequire(${varModuleId})`;
330
+ }
331
+ );
332
+
333
+ mainTemplate.hooks.requireExtensions.tap(
334
+ "HotModuleReplacementPlugin",
335
+ source => {
336
+ const buf = [source];
337
+ buf.push("");
338
+ buf.push("// __webpack_hash__");
339
+ buf.push(
340
+ mainTemplate.requireFn +
341
+ ".h = function() { return hotCurrentHash; };"
342
+ );
343
+ return Template.asString(buf);
344
+ }
345
+ );
346
+
347
+ const needChunkLoadingCode = chunk => {
348
+ for (const chunkGroup of chunk.groupsIterable) {
349
+ if (chunkGroup.chunks.length > 1) return true;
350
+ if (chunkGroup.getNumberOfChildren() > 0) return true;
351
+ }
352
+ return false;
353
+ };
354
+
355
+ mainTemplate.hooks.bootstrap.tap(
356
+ "HotModuleReplacementPlugin",
357
+ (source, chunk, hash) => {
358
+ source = mainTemplate.hooks.hotBootstrap.call(source, chunk, hash);
359
+ return Template.asString([
360
+ source,
361
+ "",
362
+ hotInitCode
363
+ .replace(/\$require\$/g, mainTemplate.requireFn)
364
+ .replace(/\$hash\$/g, JSON.stringify(hash))
365
+ .replace(/\$requestTimeout\$/g, requestTimeout)
366
+ .replace(
367
+ /\/\*foreachInstalledChunks\*\//g,
368
+ needChunkLoadingCode(chunk)
369
+ ? "for(var chunkId in installedChunks)"
370
+ : `var chunkId = ${JSON.stringify(chunk.id)};`
371
+ )
372
+ ]);
373
+ }
374
+ );
375
+
376
+ mainTemplate.hooks.globalHash.tap(
377
+ "HotModuleReplacementPlugin",
378
+ () => true
379
+ );
380
+
381
+ mainTemplate.hooks.currentHash.tap(
382
+ "HotModuleReplacementPlugin",
383
+ (_, length) => {
384
+ if (isFinite(length)) {
385
+ return `hotCurrentHash.substr(0, ${length})`;
386
+ } else {
387
+ return "hotCurrentHash";
388
+ }
389
+ }
390
+ );
391
+
392
+ mainTemplate.hooks.moduleObj.tap(
393
+ "HotModuleReplacementPlugin",
394
+ (source, chunk, hash, varModuleId) => {
395
+ return Template.asString([
396
+ `${source},`,
397
+ `hot: hotCreateModule(${varModuleId}),`,
398
+ "parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),",
399
+ "children: []"
400
+ ]);
401
+ }
402
+ );
403
+
404
+ // TODO add HMR support for javascript/esm
405
+ normalModuleFactory.hooks.parser
406
+ .for("javascript/auto")
407
+ .tap("HotModuleReplacementPlugin", addParserPlugins);
408
+ normalModuleFactory.hooks.parser
409
+ .for("javascript/dynamic")
410
+ .tap("HotModuleReplacementPlugin", addParserPlugins);
411
+
412
+ compilation.hooks.normalModuleLoader.tap(
413
+ "HotModuleReplacementPlugin",
414
+ context => {
415
+ context.hot = true;
416
+ }
417
+ );
418
+ }
419
+ );
420
+ }
421
+ };
422
+
423
+ const hotInitCode = Template.getFunctionContent(
424
+ require("./HotModuleReplacement.runtime")
425
+ );
@@ -0,0 +1,17 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const Chunk = require("./Chunk");
8
+
9
+ class HotUpdateChunk extends Chunk {
10
+ constructor() {
11
+ super();
12
+ /** @type {(string|number)[]} */
13
+ this.removedModules = undefined;
14
+ }
15
+ }
16
+
17
+ module.exports = HotUpdateChunk;
@@ -0,0 +1,78 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const Template = require("./Template");
8
+ const HotUpdateChunk = require("./HotUpdateChunk");
9
+ const { Tapable, SyncWaterfallHook, SyncHook } = require("tapable");
10
+
11
+ module.exports = class HotUpdateChunkTemplate extends Tapable {
12
+ constructor(outputOptions) {
13
+ super();
14
+ this.outputOptions = outputOptions || {};
15
+ this.hooks = {
16
+ modules: new SyncWaterfallHook([
17
+ "source",
18
+ "modules",
19
+ "removedModules",
20
+ "moduleTemplate",
21
+ "dependencyTemplates"
22
+ ]),
23
+ render: new SyncWaterfallHook([
24
+ "source",
25
+ "modules",
26
+ "removedModules",
27
+ "hash",
28
+ "id",
29
+ "moduleTemplate",
30
+ "dependencyTemplates"
31
+ ]),
32
+ hash: new SyncHook(["hash"])
33
+ };
34
+ }
35
+
36
+ render(
37
+ id,
38
+ modules,
39
+ removedModules,
40
+ hash,
41
+ moduleTemplate,
42
+ dependencyTemplates
43
+ ) {
44
+ const hotUpdateChunk = new HotUpdateChunk();
45
+ hotUpdateChunk.id = id;
46
+ hotUpdateChunk.setModules(modules);
47
+ hotUpdateChunk.removedModules = removedModules;
48
+ const modulesSource = Template.renderChunkModules(
49
+ hotUpdateChunk,
50
+ m => typeof m.source === "function",
51
+ moduleTemplate,
52
+ dependencyTemplates
53
+ );
54
+ const core = this.hooks.modules.call(
55
+ modulesSource,
56
+ modules,
57
+ removedModules,
58
+ moduleTemplate,
59
+ dependencyTemplates
60
+ );
61
+ const source = this.hooks.render.call(
62
+ core,
63
+ modules,
64
+ removedModules,
65
+ hash,
66
+ id,
67
+ moduleTemplate,
68
+ dependencyTemplates
69
+ );
70
+ return source;
71
+ }
72
+
73
+ updateHash(hash) {
74
+ hash.update("HotUpdateChunkTemplate");
75
+ hash.update("1");
76
+ this.hooks.hash.call(hash);
77
+ }
78
+ };
@@ -0,0 +1,91 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const validateOptions = require("schema-utils");
8
+ const schema = require("../schemas/plugins/IgnorePlugin.json");
9
+
10
+ /** @typedef {import("../declarations/plugins/IgnorePlugin").IgnorePluginOptions} IgnorePluginOptions */
11
+ /** @typedef {import("./Compiler")} Compiler */
12
+
13
+ class IgnorePlugin {
14
+ /**
15
+ * @param {IgnorePluginOptions} options IgnorePlugin options
16
+ */
17
+ constructor(options) {
18
+ // TODO webpack 5 remove this compat-layer
19
+ if (arguments.length > 1 || options instanceof RegExp) {
20
+ options = {
21
+ resourceRegExp: arguments[0],
22
+ contextRegExp: arguments[1]
23
+ };
24
+ }
25
+
26
+ validateOptions(schema, options, "IgnorePlugin");
27
+ this.options = options;
28
+
29
+ /** @private @type {Function} */
30
+ this.checkIgnore = this.checkIgnore.bind(this);
31
+ }
32
+
33
+ /**
34
+ * Note that if "contextRegExp" is given, both the "resourceRegExp"
35
+ * and "contextRegExp" have to match.
36
+ *
37
+ * @param {TODO} result result
38
+ * @returns {TODO|null} returns result or null if result should be ignored
39
+ */
40
+ checkIgnore(result) {
41
+ if (!result) return result;
42
+
43
+ if (
44
+ "checkResource" in this.options &&
45
+ this.options.checkResource &&
46
+ this.options.checkResource(result.request, result.context)
47
+ ) {
48
+ // TODO webpack 5 remove checkContext, as checkResource already gets context
49
+ if ("checkContext" in this.options && this.options.checkContext) {
50
+ if (this.options.checkContext(result.context)) {
51
+ return null;
52
+ }
53
+ } else {
54
+ return null;
55
+ }
56
+ }
57
+
58
+ if (
59
+ "resourceRegExp" in this.options &&
60
+ this.options.resourceRegExp &&
61
+ this.options.resourceRegExp.test(result.request)
62
+ ) {
63
+ if ("contextRegExp" in this.options && this.options.contextRegExp) {
64
+ // if "contextRegExp" is given,
65
+ // both the "resourceRegExp" and "contextRegExp" have to match.
66
+ if (this.options.contextRegExp.test(result.context)) {
67
+ return null;
68
+ }
69
+ } else {
70
+ return null;
71
+ }
72
+ }
73
+
74
+ return result;
75
+ }
76
+
77
+ /**
78
+ * @param {Compiler} compiler Webpack Compiler
79
+ * @returns {void}
80
+ */
81
+ apply(compiler) {
82
+ compiler.hooks.normalModuleFactory.tap("IgnorePlugin", nmf => {
83
+ nmf.hooks.beforeResolve.tap("IgnorePlugin", this.checkIgnore);
84
+ });
85
+ compiler.hooks.contextModuleFactory.tap("IgnorePlugin", cmf => {
86
+ cmf.hooks.beforeResolve.tap("IgnorePlugin", this.checkIgnore);
87
+ });
88
+ }
89
+ }
90
+
91
+ module.exports = IgnorePlugin;