@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,128 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const Generator = require("../Generator");
8
+ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
9
+ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
10
+ const WebAssemblyInInitialChunkError = require("./WebAssemblyInInitialChunkError");
11
+
12
+ /** @typedef {import("../Compiler")} Compiler */
13
+
14
+ let WebAssemblyGenerator;
15
+ let WebAssemblyJavascriptGenerator;
16
+ let WebAssemblyParser;
17
+
18
+ class WebAssemblyModulesPlugin {
19
+ constructor(options) {
20
+ this.options = options;
21
+ }
22
+
23
+ /**
24
+ * @param {Compiler} compiler compiler
25
+ * @returns {void}
26
+ */
27
+ apply(compiler) {
28
+ compiler.hooks.compilation.tap(
29
+ "WebAssemblyModulesPlugin",
30
+ (compilation, { normalModuleFactory }) => {
31
+ compilation.dependencyFactories.set(
32
+ WebAssemblyImportDependency,
33
+ normalModuleFactory
34
+ );
35
+
36
+ compilation.dependencyFactories.set(
37
+ WebAssemblyExportImportedDependency,
38
+ normalModuleFactory
39
+ );
40
+
41
+ normalModuleFactory.hooks.createParser
42
+ .for("webassembly/experimental")
43
+ .tap("WebAssemblyModulesPlugin", () => {
44
+ if (WebAssemblyParser === undefined) {
45
+ WebAssemblyParser = require("./WebAssemblyParser");
46
+ }
47
+ return new WebAssemblyParser();
48
+ });
49
+
50
+ normalModuleFactory.hooks.createGenerator
51
+ .for("webassembly/experimental")
52
+ .tap("WebAssemblyModulesPlugin", () => {
53
+ if (WebAssemblyGenerator === undefined) {
54
+ WebAssemblyGenerator = require("./WebAssemblyGenerator");
55
+ }
56
+ if (WebAssemblyJavascriptGenerator === undefined) {
57
+ WebAssemblyJavascriptGenerator = require("./WebAssemblyJavascriptGenerator");
58
+ }
59
+ return Generator.byType({
60
+ javascript: new WebAssemblyJavascriptGenerator(),
61
+ webassembly: new WebAssemblyGenerator(this.options)
62
+ });
63
+ });
64
+
65
+ compilation.chunkTemplate.hooks.renderManifest.tap(
66
+ "WebAssemblyModulesPlugin",
67
+ (result, options) => {
68
+ const chunk = options.chunk;
69
+ const outputOptions = options.outputOptions;
70
+ const moduleTemplates = options.moduleTemplates;
71
+ const dependencyTemplates = options.dependencyTemplates;
72
+
73
+ for (const module of chunk.modulesIterable) {
74
+ if (module.type && module.type.startsWith("webassembly")) {
75
+ const filenameTemplate =
76
+ outputOptions.webassemblyModuleFilename;
77
+
78
+ result.push({
79
+ render: () =>
80
+ this.renderWebAssembly(
81
+ module,
82
+ moduleTemplates.webassembly,
83
+ dependencyTemplates
84
+ ),
85
+ filenameTemplate,
86
+ pathOptions: {
87
+ module
88
+ },
89
+ identifier: `webassemblyModule${module.id}`,
90
+ hash: module.hash
91
+ });
92
+ }
93
+ }
94
+
95
+ return result;
96
+ }
97
+ );
98
+
99
+ compilation.hooks.afterChunks.tap("WebAssemblyModulesPlugin", () => {
100
+ const initialWasmModules = new Set();
101
+ for (const chunk of compilation.chunks) {
102
+ if (chunk.canBeInitial()) {
103
+ for (const module of chunk.modulesIterable) {
104
+ if (module.type.startsWith("webassembly")) {
105
+ initialWasmModules.add(module);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ for (const module of initialWasmModules) {
111
+ compilation.errors.push(
112
+ new WebAssemblyInInitialChunkError(
113
+ module,
114
+ compilation.requestShortener
115
+ )
116
+ );
117
+ }
118
+ });
119
+ }
120
+ );
121
+ }
122
+
123
+ renderWebAssembly(module, moduleTemplate, dependencyTemplates) {
124
+ return moduleTemplate.render(module, dependencyTemplates, {});
125
+ }
126
+ }
127
+
128
+ module.exports = WebAssemblyModulesPlugin;
@@ -0,0 +1,175 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const t = require("@webassemblyjs/ast");
8
+ const { decode } = require("@webassemblyjs/wasm-parser");
9
+ const {
10
+ moduleContextFromModuleAST
11
+ } = require("@webassemblyjs/helper-module-context");
12
+
13
+ const { Tapable } = require("tapable");
14
+ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
15
+ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
16
+
17
+ /** @typedef {import("../Module")} Module */
18
+
19
+ const JS_COMPAT_TYPES = new Set(["i32", "f32", "f64"]);
20
+
21
+ /**
22
+ * @param {t.Signature} signature the func signature
23
+ * @returns {null | string} the type incompatible with js types
24
+ */
25
+ const getJsIncompatibleType = signature => {
26
+ for (const param of signature.params) {
27
+ if (!JS_COMPAT_TYPES.has(param.valtype)) {
28
+ return `${param.valtype} as parameter`;
29
+ }
30
+ }
31
+ for (const type of signature.results) {
32
+ if (!JS_COMPAT_TYPES.has(type)) return `${type} as result`;
33
+ }
34
+ return null;
35
+ };
36
+
37
+ /**
38
+ * TODO why are there two different Signature types?
39
+ * @param {t.FuncSignature} signature the func signature
40
+ * @returns {null | string} the type incompatible with js types
41
+ */
42
+ const getJsIncompatibleTypeOfFuncSignature = signature => {
43
+ for (const param of signature.args) {
44
+ if (!JS_COMPAT_TYPES.has(param)) {
45
+ return `${param} as parameter`;
46
+ }
47
+ }
48
+ for (const type of signature.result) {
49
+ if (!JS_COMPAT_TYPES.has(type)) return `${type} as result`;
50
+ }
51
+ return null;
52
+ };
53
+
54
+ const decoderOpts = {
55
+ ignoreCodeSection: true,
56
+ ignoreDataSection: true,
57
+
58
+ // this will avoid having to lookup with identifiers in the ModuleContext
59
+ ignoreCustomNameSection: true
60
+ };
61
+
62
+ class WebAssemblyParser extends Tapable {
63
+ constructor(options) {
64
+ super();
65
+ this.hooks = {};
66
+ this.options = options;
67
+ }
68
+
69
+ parse(binary, state) {
70
+ // flag it as ESM
71
+ state.module.buildMeta.exportsType = "namespace";
72
+
73
+ // parse it
74
+ const program = decode(binary, decoderOpts);
75
+ const module = program.body[0];
76
+
77
+ const moduleContext = moduleContextFromModuleAST(module);
78
+
79
+ // extract imports and exports
80
+ const exports = (state.module.buildMeta.providedExports = []);
81
+ const jsIncompatibleExports = (state.module.buildMeta.jsIncompatibleExports = []);
82
+
83
+ const importedGlobals = [];
84
+ t.traverse(module, {
85
+ ModuleExport({ node }) {
86
+ const descriptor = node.descr;
87
+
88
+ if (descriptor.exportType === "Func") {
89
+ const funcidx = descriptor.id.value;
90
+
91
+ /** @type {t.FuncSignature} */
92
+ const funcSignature = moduleContext.getFunction(funcidx);
93
+
94
+ const incompatibleType = getJsIncompatibleTypeOfFuncSignature(
95
+ funcSignature
96
+ );
97
+
98
+ if (incompatibleType) {
99
+ jsIncompatibleExports[node.name] = incompatibleType;
100
+ }
101
+ }
102
+
103
+ exports.push(node.name);
104
+
105
+ if (node.descr && node.descr.exportType === "Global") {
106
+ const refNode = importedGlobals[node.descr.id.value];
107
+ if (refNode) {
108
+ const dep = new WebAssemblyExportImportedDependency(
109
+ node.name,
110
+ refNode.module,
111
+ refNode.name,
112
+ refNode.descr.valtype
113
+ );
114
+
115
+ state.module.addDependency(dep);
116
+ }
117
+ }
118
+ },
119
+
120
+ Global({ node }) {
121
+ const init = node.init[0];
122
+
123
+ let importNode = null;
124
+
125
+ if (init.id === "get_global") {
126
+ const globalIdx = init.args[0].value;
127
+
128
+ if (globalIdx < importedGlobals.length) {
129
+ importNode = importedGlobals[globalIdx];
130
+ }
131
+ }
132
+
133
+ importedGlobals.push(importNode);
134
+ },
135
+
136
+ ModuleImport({ node }) {
137
+ /** @type {false | string} */
138
+ let onlyDirectImport = false;
139
+
140
+ if (t.isMemory(node.descr) === true) {
141
+ onlyDirectImport = "Memory";
142
+ } else if (t.isTable(node.descr) === true) {
143
+ onlyDirectImport = "Table";
144
+ } else if (t.isFuncImportDescr(node.descr) === true) {
145
+ const incompatibleType = getJsIncompatibleType(node.descr.signature);
146
+ if (incompatibleType) {
147
+ onlyDirectImport = `Non-JS-compatible Func Sigurature (${incompatibleType})`;
148
+ }
149
+ } else if (t.isGlobalType(node.descr) === true) {
150
+ const type = node.descr.valtype;
151
+ if (!JS_COMPAT_TYPES.has(type)) {
152
+ onlyDirectImport = `Non-JS-compatible Global Type (${type})`;
153
+ }
154
+ }
155
+
156
+ const dep = new WebAssemblyImportDependency(
157
+ node.module,
158
+ node.name,
159
+ node.descr,
160
+ onlyDirectImport
161
+ );
162
+
163
+ state.module.addDependency(dep);
164
+
165
+ if (t.isGlobalType(node.descr)) {
166
+ importedGlobals.push(node);
167
+ }
168
+ }
169
+ });
170
+
171
+ return state;
172
+ }
173
+ }
174
+
175
+ module.exports = WebAssemblyParser;
@@ -0,0 +1,59 @@
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 WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
9
+
10
+ /** @typedef {import("../Module")} Module */
11
+
12
+ /** @typedef {Object} UsedWasmDependency
13
+ * @property {WebAssemblyImportDependency} dependency the dependency
14
+ * @property {string} name the export name
15
+ * @property {string} module the module name
16
+ */
17
+
18
+ const MANGLED_MODULE = "a";
19
+
20
+ /**
21
+ * @param {Module} module the module
22
+ * @param {boolean} mangle mangle module and export names
23
+ * @returns {UsedWasmDependency[]} used dependencies and (mangled) name
24
+ */
25
+ const getUsedDependencies = (module, mangle) => {
26
+ /** @type {UsedWasmDependency[]} */
27
+ const array = [];
28
+ let importIndex = 0;
29
+ for (const dep of module.dependencies) {
30
+ if (dep instanceof WebAssemblyImportDependency) {
31
+ if (dep.description.type === "GlobalType" || dep.module === null) {
32
+ continue;
33
+ }
34
+
35
+ const exportName = dep.name;
36
+ // TODO add the following 3 lines when removing of ModuleExport is possible
37
+ // const importedModule = dep.module;
38
+ // const usedName = importedModule && importedModule.isUsed(exportName);
39
+ // if (usedName !== false) {
40
+ if (mangle) {
41
+ array.push({
42
+ dependency: dep,
43
+ name: Template.numberToIdentifer(importIndex++),
44
+ module: MANGLED_MODULE
45
+ });
46
+ } else {
47
+ array.push({
48
+ dependency: dep,
49
+ name: exportName,
50
+ module: dep.request
51
+ });
52
+ }
53
+ }
54
+ }
55
+ return array;
56
+ };
57
+
58
+ exports.getUsedDependencies = getUsedDependencies;
59
+ exports.MANGLED_MODULE = MANGLED_MODULE;
@@ -0,0 +1,37 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const WasmMainTemplatePlugin = require("../wasm/WasmMainTemplatePlugin");
8
+
9
+ class FetchCompileWasmTemplatePlugin {
10
+ constructor(options) {
11
+ this.options = options || {};
12
+ }
13
+
14
+ apply(compiler) {
15
+ compiler.hooks.thisCompilation.tap(
16
+ "FetchCompileWasmTemplatePlugin",
17
+ compilation => {
18
+ const mainTemplate = compilation.mainTemplate;
19
+ const generateLoadBinaryCode = path =>
20
+ `fetch(${mainTemplate.requireFn}.p + ${path})`;
21
+
22
+ const plugin = new WasmMainTemplatePlugin(
23
+ Object.assign(
24
+ {
25
+ generateLoadBinaryCode,
26
+ supportsStreaming: true
27
+ },
28
+ this.options
29
+ )
30
+ );
31
+ plugin.apply(mainTemplate);
32
+ }
33
+ );
34
+ }
35
+ }
36
+
37
+ module.exports = FetchCompileWasmTemplatePlugin;
@@ -0,0 +1,71 @@
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
+
9
+ /** @typedef {import("../ChunkTemplate")} ChunkTemplate */
10
+
11
+ const getEntryInfo = chunk => {
12
+ return [chunk.entryModule].filter(Boolean).map(m =>
13
+ [m.id].concat(
14
+ Array.from(chunk.groupsIterable)[0]
15
+ .chunks.filter(c => c !== chunk)
16
+ .map(c => c.id)
17
+ )
18
+ );
19
+ };
20
+
21
+ class JsonpChunkTemplatePlugin {
22
+ /**
23
+ * @param {ChunkTemplate} chunkTemplate the chunk template
24
+ * @returns {void}
25
+ */
26
+ apply(chunkTemplate) {
27
+ chunkTemplate.hooks.render.tap(
28
+ "JsonpChunkTemplatePlugin",
29
+ (modules, chunk) => {
30
+ const jsonpFunction = chunkTemplate.outputOptions.jsonpFunction;
31
+ const globalObject = chunkTemplate.outputOptions.globalObject;
32
+ const source = new ConcatSource();
33
+ const prefetchChunks = chunk.getChildIdsByOrders().prefetch;
34
+ source.add(
35
+ `(${globalObject}[${JSON.stringify(
36
+ jsonpFunction
37
+ )}] = ${globalObject}[${JSON.stringify(
38
+ jsonpFunction
39
+ )}] || []).push([${JSON.stringify(chunk.ids)},`
40
+ );
41
+ source.add(modules);
42
+ const entries = getEntryInfo(chunk);
43
+ if (entries.length > 0) {
44
+ source.add(`,${JSON.stringify(entries)}`);
45
+ } else if (prefetchChunks && prefetchChunks.length) {
46
+ source.add(`,0`);
47
+ }
48
+
49
+ if (prefetchChunks && prefetchChunks.length) {
50
+ source.add(`,${JSON.stringify(prefetchChunks)}`);
51
+ }
52
+ source.add("])");
53
+ return source;
54
+ }
55
+ );
56
+ chunkTemplate.hooks.hash.tap("JsonpChunkTemplatePlugin", hash => {
57
+ hash.update("JsonpChunkTemplatePlugin");
58
+ hash.update("4");
59
+ hash.update(`${chunkTemplate.outputOptions.jsonpFunction}`);
60
+ hash.update(`${chunkTemplate.outputOptions.globalObject}`);
61
+ });
62
+ chunkTemplate.hooks.hashForChunk.tap(
63
+ "JsonpChunkTemplatePlugin",
64
+ (hash, chunk) => {
65
+ hash.update(JSON.stringify(getEntryInfo(chunk)));
66
+ hash.update(JSON.stringify(chunk.getChildIdsByOrders().prefetch) || "");
67
+ }
68
+ );
69
+ }
70
+ }
71
+ module.exports = JsonpChunkTemplatePlugin;
@@ -0,0 +1,50 @@
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
+
9
+ class JsonpExportMainTemplatePlugin {
10
+ /**
11
+ * @param {string} name jsonp function name
12
+ */
13
+ constructor(name) {
14
+ this.name = name;
15
+ }
16
+
17
+ apply(compilation) {
18
+ const { mainTemplate, chunkTemplate } = compilation;
19
+
20
+ const onRenderWithEntry = (source, chunk, hash) => {
21
+ const name = mainTemplate.getAssetPath(this.name || "", {
22
+ hash,
23
+ chunk
24
+ });
25
+ return new ConcatSource(`${name}(`, source, ");");
26
+ };
27
+
28
+ for (const template of [mainTemplate, chunkTemplate]) {
29
+ template.hooks.renderWithEntry.tap(
30
+ "JsonpExportMainTemplatePlugin",
31
+ onRenderWithEntry
32
+ );
33
+ }
34
+
35
+ mainTemplate.hooks.globalHashPaths.tap(
36
+ "JsonpExportMainTemplatePlugin",
37
+ paths => {
38
+ if (this.name) paths.push(this.name);
39
+ return paths;
40
+ }
41
+ );
42
+
43
+ mainTemplate.hooks.hash.tap("JsonpExportMainTemplatePlugin", hash => {
44
+ hash.update("jsonp export");
45
+ hash.update(`${this.name}`);
46
+ });
47
+ }
48
+ }
49
+
50
+ module.exports = JsonpExportMainTemplatePlugin;
@@ -0,0 +1,39 @@
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
+
9
+ class JsonpHotUpdateChunkTemplatePlugin {
10
+ apply(hotUpdateChunkTemplate) {
11
+ hotUpdateChunkTemplate.hooks.render.tap(
12
+ "JsonpHotUpdateChunkTemplatePlugin",
13
+ (modulesSource, modules, removedModules, hash, id) => {
14
+ const source = new ConcatSource();
15
+ source.add(
16
+ `${
17
+ hotUpdateChunkTemplate.outputOptions.hotUpdateFunction
18
+ }(${JSON.stringify(id)},`
19
+ );
20
+ source.add(modulesSource);
21
+ source.add(")");
22
+ return source;
23
+ }
24
+ );
25
+ hotUpdateChunkTemplate.hooks.hash.tap(
26
+ "JsonpHotUpdateChunkTemplatePlugin",
27
+ hash => {
28
+ hash.update("JsonpHotUpdateChunkTemplatePlugin");
29
+ hash.update("3");
30
+ hash.update(
31
+ `${hotUpdateChunkTemplate.outputOptions.hotUpdateFunction}`
32
+ );
33
+ hash.update(`${hotUpdateChunkTemplate.outputOptions.library}`);
34
+ }
35
+ );
36
+ }
37
+ }
38
+
39
+ module.exports = JsonpHotUpdateChunkTemplatePlugin;
@@ -0,0 +1,71 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ // eslint-disable-next-line no-unused-vars
6
+ var hotAddUpdateChunk = undefined;
7
+ var parentHotUpdateCallback = undefined;
8
+ var $require$ = undefined;
9
+ var $hotMainFilename$ = undefined;
10
+ var $hotChunkFilename$ = undefined;
11
+ var $crossOriginLoading$ = undefined;
12
+
13
+ module.exports = function() {
14
+ // eslint-disable-next-line no-unused-vars
15
+ function webpackHotUpdateCallback(chunkId, moreModules) {
16
+ hotAddUpdateChunk(chunkId, moreModules);
17
+ if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);
18
+ } //$semicolon
19
+
20
+ // eslint-disable-next-line no-unused-vars
21
+ function hotDownloadUpdateChunk(chunkId) {
22
+ var script = document.createElement("script");
23
+ script.charset = "utf-8";
24
+ script.src = $require$.p + $hotChunkFilename$;
25
+ if ($crossOriginLoading$) script.crossOrigin = $crossOriginLoading$;
26
+ document.head.appendChild(script);
27
+ }
28
+
29
+ // eslint-disable-next-line no-unused-vars
30
+ function hotDownloadManifest(requestTimeout) {
31
+ requestTimeout = requestTimeout || 10000;
32
+ return new Promise(function(resolve, reject) {
33
+ if (typeof XMLHttpRequest === "undefined") {
34
+ return reject(new Error("No browser support"));
35
+ }
36
+ try {
37
+ var request = new XMLHttpRequest();
38
+ var requestPath = $require$.p + $hotMainFilename$;
39
+ request.open("GET", requestPath, true);
40
+ request.timeout = requestTimeout;
41
+ request.send(null);
42
+ } catch (err) {
43
+ return reject(err);
44
+ }
45
+ request.onreadystatechange = function() {
46
+ if (request.readyState !== 4) return;
47
+ if (request.status === 0) {
48
+ // timeout
49
+ reject(
50
+ new Error("Manifest request to " + requestPath + " timed out.")
51
+ );
52
+ } else if (request.status === 404) {
53
+ // no update available
54
+ resolve();
55
+ } else if (request.status !== 200 && request.status !== 304) {
56
+ // other failure
57
+ reject(new Error("Manifest request to " + requestPath + " failed."));
58
+ } else {
59
+ // success
60
+ try {
61
+ var update = JSON.parse(request.responseText);
62
+ } catch (e) {
63
+ reject(e);
64
+ return;
65
+ }
66
+ resolve(update);
67
+ }
68
+ };
69
+ });
70
+ }
71
+ };