@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,174 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const Queue = require("./util/Queue");
8
+
9
+ const addToSet = (a, b) => {
10
+ for (const item of b) {
11
+ a.add(item);
12
+ }
13
+ };
14
+
15
+ class FlagDependencyExportsPlugin {
16
+ apply(compiler) {
17
+ compiler.hooks.compilation.tap(
18
+ "FlagDependencyExportsPlugin",
19
+ compilation => {
20
+ compilation.hooks.finishModules.tap(
21
+ "FlagDependencyExportsPlugin",
22
+ modules => {
23
+ const dependencies = new Map();
24
+
25
+ const queue = new Queue();
26
+
27
+ let module;
28
+ let moduleWithExports;
29
+ let moduleProvidedExports;
30
+ let providedExportsAreTemporary;
31
+
32
+ const processDependenciesBlock = depBlock => {
33
+ for (const dep of depBlock.dependencies) {
34
+ if (processDependency(dep)) return true;
35
+ }
36
+ for (const variable of depBlock.variables) {
37
+ for (const dep of variable.dependencies) {
38
+ if (processDependency(dep)) return true;
39
+ }
40
+ }
41
+ for (const block of depBlock.blocks) {
42
+ if (processDependenciesBlock(block)) return true;
43
+ }
44
+ return false;
45
+ };
46
+
47
+ const processDependency = dep => {
48
+ const exportDesc = dep.getExports && dep.getExports();
49
+ if (!exportDesc) return;
50
+ moduleWithExports = true;
51
+ const exports = exportDesc.exports;
52
+ // break early if it's only in the worst state
53
+ if (module.buildMeta.providedExports === true) {
54
+ return true;
55
+ }
56
+ // break if it should move to the worst state
57
+ if (exports === true) {
58
+ module.buildMeta.providedExports = true;
59
+ return true;
60
+ }
61
+ // merge in new exports
62
+ if (Array.isArray(exports)) {
63
+ addToSet(moduleProvidedExports, exports);
64
+ }
65
+ // store dependencies
66
+ const exportDeps = exportDesc.dependencies;
67
+ if (exportDeps) {
68
+ providedExportsAreTemporary = true;
69
+ for (const exportDependency of exportDeps) {
70
+ // add dependency for this module
71
+ const set = dependencies.get(exportDependency);
72
+ if (set === undefined) {
73
+ dependencies.set(exportDependency, new Set([module]));
74
+ } else {
75
+ set.add(module);
76
+ }
77
+ }
78
+ }
79
+ return false;
80
+ };
81
+
82
+ const notifyDependencies = () => {
83
+ const deps = dependencies.get(module);
84
+ if (deps !== undefined) {
85
+ for (const dep of deps) {
86
+ queue.enqueue(dep);
87
+ }
88
+ }
89
+ };
90
+
91
+ const notifyDependenciesIfDifferent = (set, array) => {
92
+ const deps = dependencies.get(module);
93
+ if (deps !== undefined) {
94
+ if (set.size === array.length) {
95
+ let i = 0;
96
+ let different = false;
97
+ for (const item of set) {
98
+ if (item !== array[i++]) {
99
+ different = true;
100
+ break;
101
+ }
102
+ }
103
+ if (!different) return;
104
+ }
105
+ for (const dep of deps) {
106
+ queue.enqueue(dep);
107
+ }
108
+ }
109
+ };
110
+
111
+ // Start with all modules without provided exports
112
+ for (const module of modules) {
113
+ if (module.buildInfo.temporaryProvidedExports) {
114
+ // Clear exports when they are temporary
115
+ // and recreate them
116
+ module.buildMeta.providedExports = null;
117
+ queue.enqueue(module);
118
+ } else if (!module.buildMeta.providedExports) {
119
+ queue.enqueue(module);
120
+ }
121
+ }
122
+
123
+ while (queue.length > 0) {
124
+ module = queue.dequeue();
125
+
126
+ if (module.buildMeta.providedExports !== true) {
127
+ moduleWithExports =
128
+ module.buildMeta && module.buildMeta.exportsType;
129
+ moduleProvidedExports = new Set();
130
+ providedExportsAreTemporary = false;
131
+ processDependenciesBlock(module);
132
+ module.buildInfo.temporaryProvidedExports = providedExportsAreTemporary;
133
+ if (!moduleWithExports) {
134
+ notifyDependencies();
135
+ module.buildMeta.providedExports = true;
136
+ } else if (module.buildMeta.providedExports === true) {
137
+ notifyDependencies();
138
+ } else if (!module.buildMeta.providedExports) {
139
+ notifyDependencies();
140
+ module.buildMeta.providedExports = Array.from(
141
+ moduleProvidedExports
142
+ );
143
+ } else {
144
+ notifyDependenciesIfDifferent(
145
+ moduleProvidedExports,
146
+ module.buildMeta.providedExports
147
+ );
148
+ module.buildMeta.providedExports = Array.from(
149
+ moduleProvidedExports
150
+ );
151
+ }
152
+ }
153
+ }
154
+ }
155
+ );
156
+ const providedExportsCache = new WeakMap();
157
+ compilation.hooks.rebuildModule.tap(
158
+ "FlagDependencyExportsPlugin",
159
+ module => {
160
+ providedExportsCache.set(module, module.buildMeta.providedExports);
161
+ }
162
+ );
163
+ compilation.hooks.finishRebuildingModule.tap(
164
+ "FlagDependencyExportsPlugin",
165
+ module => {
166
+ module.buildMeta.providedExports = providedExportsCache.get(module);
167
+ }
168
+ );
169
+ }
170
+ );
171
+ }
172
+ }
173
+
174
+ module.exports = FlagDependencyExportsPlugin;
@@ -0,0 +1,116 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ /** @typedef {import("./Module")} Module */
8
+ /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
9
+
10
+ /** @typedef {false | true | string[]} UsedExports */
11
+
12
+ const addToSet = (a, b) => {
13
+ for (const item of b) {
14
+ if (!a.includes(item)) a.push(item);
15
+ }
16
+ return a;
17
+ };
18
+
19
+ const isSubset = (biggerSet, subset) => {
20
+ if (biggerSet === true) return true;
21
+ if (subset === true) return false;
22
+ return subset.every(item => biggerSet.indexOf(item) >= 0);
23
+ };
24
+
25
+ class FlagDependencyUsagePlugin {
26
+ apply(compiler) {
27
+ compiler.hooks.compilation.tap("FlagDependencyUsagePlugin", compilation => {
28
+ compilation.hooks.optimizeDependencies.tap(
29
+ "FlagDependencyUsagePlugin",
30
+ modules => {
31
+ const processModule = (module, usedExports) => {
32
+ module.used = true;
33
+ if (module.usedExports === true) return;
34
+ if (usedExports === true) {
35
+ module.usedExports = true;
36
+ } else if (Array.isArray(usedExports)) {
37
+ const old = module.usedExports ? module.usedExports.length : -1;
38
+ module.usedExports = addToSet(
39
+ module.usedExports || [],
40
+ usedExports
41
+ );
42
+ if (module.usedExports.length === old) {
43
+ return;
44
+ }
45
+ } else if (Array.isArray(module.usedExports)) {
46
+ return;
47
+ } else {
48
+ module.usedExports = false;
49
+ }
50
+
51
+ // for a module without side effects we stop tracking usage here when no export is used
52
+ // This module won't be evaluated in this case
53
+ if (module.factoryMeta.sideEffectFree) {
54
+ if (module.usedExports === false) return;
55
+ if (
56
+ Array.isArray(module.usedExports) &&
57
+ module.usedExports.length === 0
58
+ )
59
+ return;
60
+ }
61
+
62
+ queue.push([module, module, module.usedExports]);
63
+ };
64
+
65
+ const processDependenciesBlock = (module, depBlock, usedExports) => {
66
+ for (const dep of depBlock.dependencies) {
67
+ processDependency(module, dep);
68
+ }
69
+ for (const variable of depBlock.variables) {
70
+ for (const dep of variable.dependencies) {
71
+ processDependency(module, dep);
72
+ }
73
+ }
74
+ for (const block of depBlock.blocks) {
75
+ queue.push([module, block, usedExports]);
76
+ }
77
+ };
78
+
79
+ const processDependency = (module, dep) => {
80
+ const reference = compilation.getDependencyReference(module, dep);
81
+ if (!reference) return;
82
+ const referenceModule = reference.module;
83
+ const importedNames = reference.importedNames;
84
+ const oldUsed = referenceModule.used;
85
+ const oldUsedExports = referenceModule.usedExports;
86
+ if (
87
+ !oldUsed ||
88
+ (importedNames &&
89
+ (!oldUsedExports || !isSubset(oldUsedExports, importedNames)))
90
+ ) {
91
+ processModule(referenceModule, importedNames);
92
+ }
93
+ };
94
+
95
+ for (const module of modules) {
96
+ if (!module.used) module.used = false;
97
+ }
98
+
99
+ /** @type {[Module, DependenciesBlock, UsedExports][]} */
100
+ const queue = [];
101
+ for (const preparedEntrypoint of compilation._preparedEntrypoints) {
102
+ if (preparedEntrypoint.module) {
103
+ processModule(preparedEntrypoint.module, true);
104
+ }
105
+ }
106
+
107
+ while (queue.length) {
108
+ const queueItem = queue.pop();
109
+ processDependenciesBlock(queueItem[0], queueItem[1], queueItem[2]);
110
+ }
111
+ }
112
+ );
113
+ });
114
+ }
115
+ }
116
+ module.exports = FlagDependencyUsagePlugin;
@@ -0,0 +1,36 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class FlagInitialModulesAsUsedPlugin {
8
+ constructor(explanation) {
9
+ this.explanation = explanation;
10
+ }
11
+
12
+ apply(compiler) {
13
+ compiler.hooks.compilation.tap(
14
+ "FlagInitialModulesAsUsedPlugin",
15
+ compilation => {
16
+ compilation.hooks.afterOptimizeChunks.tap(
17
+ "FlagInitialModulesAsUsedPlugin",
18
+ chunks => {
19
+ for (const chunk of chunks) {
20
+ if (!chunk.isOnlyInitial()) {
21
+ return;
22
+ }
23
+ for (const module of chunk.modulesIterable) {
24
+ module.used = true;
25
+ module.usedExports = true;
26
+ module.addReason(null, null, this.explanation);
27
+ }
28
+ }
29
+ }
30
+ );
31
+ }
32
+ );
33
+ }
34
+ }
35
+
36
+ module.exports = FlagInitialModulesAsUsedPlugin;
@@ -0,0 +1,19 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const FunctionModuleTemplatePlugin = require("./FunctionModuleTemplatePlugin");
8
+
9
+ class FunctionModulePlugin {
10
+ apply(compiler) {
11
+ compiler.hooks.compilation.tap("FunctionModulePlugin", compilation => {
12
+ new FunctionModuleTemplatePlugin().apply(
13
+ compilation.moduleTemplates.javascript
14
+ );
15
+ });
16
+ }
17
+ }
18
+
19
+ module.exports = FunctionModulePlugin;
@@ -0,0 +1,102 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const { ConcatSource } = require("webpack-sources");
8
+ const Template = require("./Template");
9
+
10
+ class FunctionModuleTemplatePlugin {
11
+ apply(moduleTemplate) {
12
+ moduleTemplate.hooks.render.tap(
13
+ "FunctionModuleTemplatePlugin",
14
+ (moduleSource, module) => {
15
+ const source = new ConcatSource();
16
+ const args = [module.moduleArgument];
17
+ // TODO remove HACK checking type for javascript
18
+ if (module.type && module.type.startsWith("javascript")) {
19
+ args.push(module.exportsArgument);
20
+ if (module.hasDependencies(d => d.requireWebpackRequire !== false)) {
21
+ args.push("__webpack_require__");
22
+ }
23
+ } else if (module.type && module.type.startsWith("json")) {
24
+ // no additional arguments needed
25
+ } else {
26
+ args.push(module.exportsArgument, "__webpack_require__");
27
+ }
28
+ source.add("/***/ (function(" + args.join(", ") + ") {\n\n");
29
+ if (module.buildInfo.strict) source.add('"use strict";\n');
30
+ source.add(moduleSource);
31
+ source.add("\n\n/***/ })");
32
+ return source;
33
+ }
34
+ );
35
+
36
+ moduleTemplate.hooks.package.tap(
37
+ "FunctionModuleTemplatePlugin",
38
+ (moduleSource, module) => {
39
+ if (moduleTemplate.runtimeTemplate.outputOptions.pathinfo) {
40
+ const source = new ConcatSource();
41
+ const req = module.readableIdentifier(
42
+ moduleTemplate.runtimeTemplate.requestShortener
43
+ );
44
+ const reqStr = req.replace(/\*\//g, "*_/");
45
+ const reqStrStar = "*".repeat(reqStr.length);
46
+ source.add("/*!****" + reqStrStar + "****!*\\\n");
47
+ source.add(" !*** " + reqStr + " ***!\n");
48
+ source.add(" \\****" + reqStrStar + "****/\n");
49
+ if (
50
+ Array.isArray(module.buildMeta.providedExports) &&
51
+ module.buildMeta.providedExports.length === 0
52
+ ) {
53
+ source.add(Template.toComment("no exports provided") + "\n");
54
+ } else if (Array.isArray(module.buildMeta.providedExports)) {
55
+ source.add(
56
+ Template.toComment(
57
+ "exports provided: " +
58
+ module.buildMeta.providedExports.join(", ")
59
+ ) + "\n"
60
+ );
61
+ } else if (module.buildMeta.providedExports) {
62
+ source.add(Template.toComment("no static exports found") + "\n");
63
+ }
64
+ if (
65
+ Array.isArray(module.usedExports) &&
66
+ module.usedExports.length === 0
67
+ ) {
68
+ source.add(Template.toComment("no exports used") + "\n");
69
+ } else if (Array.isArray(module.usedExports)) {
70
+ source.add(
71
+ Template.toComment(
72
+ "exports used: " + module.usedExports.join(", ")
73
+ ) + "\n"
74
+ );
75
+ } else if (module.usedExports) {
76
+ source.add(Template.toComment("all exports used") + "\n");
77
+ }
78
+ if (module.optimizationBailout) {
79
+ for (const text of module.optimizationBailout) {
80
+ let code;
81
+ if (typeof text === "function") {
82
+ code = text(moduleTemplate.runtimeTemplate.requestShortener);
83
+ } else {
84
+ code = text;
85
+ }
86
+ source.add(Template.toComment(`${code}`) + "\n");
87
+ }
88
+ }
89
+ source.add(moduleSource);
90
+ return source;
91
+ }
92
+ return moduleSource;
93
+ }
94
+ );
95
+
96
+ moduleTemplate.hooks.hash.tap("FunctionModuleTemplatePlugin", hash => {
97
+ hash.update("FunctionModuleTemplatePlugin");
98
+ hash.update("2");
99
+ });
100
+ }
101
+ }
102
+ module.exports = FunctionModuleTemplatePlugin;
@@ -0,0 +1,60 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ /** @typedef {import("./NormalModule")} NormalModule */
8
+ /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
9
+ /** @typedef {import("webpack-sources").Source} Source */
10
+ /** @typedef {import("./Dependency").DependencyTemplate} DependencyTemplate */
11
+
12
+ /**
13
+ *
14
+ */
15
+ class Generator {
16
+ static byType(map) {
17
+ return new ByTypeGenerator(map);
18
+ }
19
+
20
+ /**
21
+ * @abstract
22
+ * @param {NormalModule} module module for which the code should be generated
23
+ * @param {Map<Function, DependencyTemplate>} dependencyTemplates mapping from dependencies to templates
24
+ * @param {RuntimeTemplate} runtimeTemplate the runtime template
25
+ * @param {string} type which kind of code should be generated
26
+ * @returns {Source} generated code
27
+ */
28
+ generate(module, dependencyTemplates, runtimeTemplate, type) {
29
+ throw new Error("Generator.generate: must be overridden");
30
+ }
31
+ }
32
+
33
+ class ByTypeGenerator extends Generator {
34
+ constructor(map) {
35
+ super();
36
+ this.map = map;
37
+ }
38
+
39
+ /**
40
+ * @param {NormalModule} module module for which the code should be generated
41
+ * @param {Map<Function, DependencyTemplate>} dependencyTemplates mapping from dependencies to templates
42
+ * @param {RuntimeTemplate} runtimeTemplate the runtime template
43
+ * @param {string} type which kind of code should be generated
44
+ * @returns {Source} generated code
45
+ */
46
+ generate(module, dependencyTemplates, runtimeTemplate, type) {
47
+ const generator = this.map[type];
48
+ if (!generator) {
49
+ throw new Error(`Generator.byType: no generator specified for ${type}`);
50
+ }
51
+ return generator.generate(
52
+ module,
53
+ dependencyTemplates,
54
+ runtimeTemplate,
55
+ type
56
+ );
57
+ }
58
+ }
59
+
60
+ module.exports = Generator;
@@ -0,0 +1,65 @@
1
+ /** @typedef {import("./Chunk")} Chunk */
2
+ /** @typedef {import("./ChunkGroup")} ChunkGroup */
3
+ /** @typedef {import("./Module")} Module */
4
+ /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
5
+ /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
6
+
7
+ /**
8
+ * @param {ChunkGroup} chunkGroup the ChunkGroup to connect
9
+ * @param {Chunk} chunk chunk to tie to ChunkGroup
10
+ * @returns {void}
11
+ */
12
+ const connectChunkGroupAndChunk = (chunkGroup, chunk) => {
13
+ if (chunkGroup.pushChunk(chunk)) {
14
+ chunk.addGroup(chunkGroup);
15
+ }
16
+ };
17
+
18
+ /**
19
+ * @param {ChunkGroup} parent parent ChunkGroup to connect
20
+ * @param {ChunkGroup} child child ChunkGroup to connect
21
+ * @returns {void}
22
+ */
23
+ const connectChunkGroupParentAndChild = (parent, child) => {
24
+ if (parent.addChild(child)) {
25
+ child.addParent(parent);
26
+ }
27
+ };
28
+
29
+ /**
30
+ * @param {Chunk} chunk Chunk to connect to Module
31
+ * @param {Module} module Module to connect to Chunk
32
+ * @returns {void}
33
+ */
34
+ const connectChunkAndModule = (chunk, module) => {
35
+ if (module.addChunk(chunk)) {
36
+ chunk.addModule(module);
37
+ }
38
+ };
39
+
40
+ /**
41
+ * @param {Chunk} chunk Chunk being disconnected
42
+ * @param {Module} module Module being disconnected
43
+ * @returns {void}
44
+ */
45
+ const disconnectChunkAndModule = (chunk, module) => {
46
+ chunk.removeModule(module);
47
+ module.removeChunk(chunk);
48
+ };
49
+
50
+ /**
51
+ * @param {AsyncDependenciesBlock} depBlock DepBlock being tied to ChunkGroup
52
+ * @param {ChunkGroup} chunkGroup ChunkGroup being tied to DepBlock
53
+ * @returns {void}
54
+ */
55
+ const connectDependenciesBlockAndChunkGroup = (depBlock, chunkGroup) => {
56
+ if (chunkGroup.addBlock(depBlock)) {
57
+ depBlock.chunkGroup = chunkGroup;
58
+ }
59
+ };
60
+
61
+ exports.connectChunkGroupAndChunk = connectChunkGroupAndChunk;
62
+ exports.connectChunkGroupParentAndChild = connectChunkGroupParentAndChild;
63
+ exports.connectChunkAndModule = connectChunkAndModule;
64
+ exports.disconnectChunkAndModule = disconnectChunkAndModule;
65
+ exports.connectDependenciesBlockAndChunkGroup = connectDependenciesBlockAndChunkGroup;
@@ -0,0 +1,17 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+ "use strict";
5
+
6
+ const WebpackError = require("./WebpackError");
7
+
8
+ module.exports = class HarmonyLinkingError extends WebpackError {
9
+ /** @param {string} message Error message */
10
+ constructor(message) {
11
+ super(message);
12
+ this.name = "HarmonyLinkingError";
13
+ this.hideStack = true;
14
+
15
+ Error.captureStackTrace(this, this.constructor);
16
+ }
17
+ };
@@ -0,0 +1,63 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const createHash = require("./util/createHash");
7
+
8
+ const validateOptions = require("schema-utils");
9
+ const schema = require("../schemas/plugins/HashedModuleIdsPlugin.json");
10
+
11
+ /** @typedef {import("../declarations/plugins/HashedModuleIdsPlugin").HashedModuleIdsPluginOptions} HashedModuleIdsPluginOptions */
12
+
13
+ class HashedModuleIdsPlugin {
14
+ /**
15
+ * @param {HashedModuleIdsPluginOptions=} options options object
16
+ */
17
+ constructor(options) {
18
+ if (!options) options = {};
19
+
20
+ validateOptions(schema, options, "Hashed Module Ids Plugin");
21
+
22
+ /** @type {HashedModuleIdsPluginOptions} */
23
+ this.options = Object.assign(
24
+ {
25
+ context: null,
26
+ hashFunction: "md4",
27
+ hashDigest: "base64",
28
+ hashDigestLength: 4
29
+ },
30
+ options
31
+ );
32
+ }
33
+
34
+ apply(compiler) {
35
+ const options = this.options;
36
+ compiler.hooks.compilation.tap("HashedModuleIdsPlugin", compilation => {
37
+ const usedIds = new Set();
38
+ compilation.hooks.beforeModuleIds.tap(
39
+ "HashedModuleIdsPlugin",
40
+ modules => {
41
+ for (const module of modules) {
42
+ if (module.id === null && module.libIdent) {
43
+ const id = module.libIdent({
44
+ context: this.options.context || compiler.options.context
45
+ });
46
+ const hash = createHash(options.hashFunction);
47
+ hash.update(id);
48
+ const hashId = /** @type {string} */ (hash.digest(
49
+ options.hashDigest
50
+ ));
51
+ let len = options.hashDigestLength;
52
+ while (usedIds.has(hashId.substr(0, len))) len++;
53
+ module.id = hashId.substr(0, len);
54
+ usedIds.add(module.id);
55
+ }
56
+ }
57
+ }
58
+ );
59
+ });
60
+ }
61
+ }
62
+
63
+ module.exports = HashedModuleIdsPlugin;