@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,458 @@
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 Template = require("../Template");
9
+ const WebAssemblyUtils = require("./WebAssemblyUtils");
10
+ const { RawSource } = require("webpack-sources");
11
+
12
+ const { editWithAST, addWithAST } = require("@webassemblyjs/wasm-edit");
13
+ const { decode } = require("@webassemblyjs/wasm-parser");
14
+ const t = require("@webassemblyjs/ast");
15
+ const {
16
+ moduleContextFromModuleAST
17
+ } = require("@webassemblyjs/helper-module-context");
18
+
19
+ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
20
+
21
+ /** @typedef {import("../Module")} Module */
22
+ /** @typedef {import("./WebAssemblyUtils").UsedWasmDependency} UsedWasmDependency */
23
+ /** @typedef {import("../NormalModule")} NormalModule */
24
+ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
25
+ /** @typedef {import("webpack-sources").Source} Source */
26
+ /** @typedef {import("../Dependency").DependencyTemplate} DependencyTemplate */
27
+
28
+ /**
29
+ * @typedef {(ArrayBuffer) => ArrayBuffer} ArrayBufferTransform
30
+ */
31
+
32
+ /**
33
+ * @template T
34
+ * @param {Function[]} fns transforms
35
+ * @returns {Function} composed transform
36
+ */
37
+ const compose = (...fns) => {
38
+ return fns.reduce(
39
+ (prevFn, nextFn) => {
40
+ return value => nextFn(prevFn(value));
41
+ },
42
+ value => value
43
+ );
44
+ };
45
+
46
+ // TODO replace with @callback
47
+
48
+ /**
49
+ * Removes the start instruction
50
+ *
51
+ * @param {Object} state unused state
52
+ * @returns {ArrayBufferTransform} transform
53
+ */
54
+ const removeStartFunc = state => bin => {
55
+ return editWithAST(state.ast, bin, {
56
+ Start(path) {
57
+ path.remove();
58
+ }
59
+ });
60
+ };
61
+
62
+ /**
63
+ * Get imported globals
64
+ *
65
+ * @param {Object} ast Module's AST
66
+ * @returns {Array<t.ModuleImport>} - nodes
67
+ */
68
+ const getImportedGlobals = ast => {
69
+ const importedGlobals = [];
70
+
71
+ t.traverse(ast, {
72
+ ModuleImport({ node }) {
73
+ if (t.isGlobalType(node.descr)) {
74
+ importedGlobals.push(node);
75
+ }
76
+ }
77
+ });
78
+
79
+ return importedGlobals;
80
+ };
81
+
82
+ /**
83
+ * Get the count for imported func
84
+ *
85
+ * @param {Object} ast Module's AST
86
+ * @returns {Number} - count
87
+ */
88
+ const getCountImportedFunc = ast => {
89
+ let count = 0;
90
+
91
+ t.traverse(ast, {
92
+ ModuleImport({ node }) {
93
+ if (t.isFuncImportDescr(node.descr)) {
94
+ count++;
95
+ }
96
+ }
97
+ });
98
+
99
+ return count;
100
+ };
101
+
102
+ /**
103
+ * Get next type index
104
+ *
105
+ * @param {Object} ast Module's AST
106
+ * @returns {t.Index} - index
107
+ */
108
+ const getNextTypeIndex = ast => {
109
+ const typeSectionMetadata = t.getSectionMetadata(ast, "type");
110
+
111
+ if (typeSectionMetadata === undefined) {
112
+ return t.indexLiteral(0);
113
+ }
114
+
115
+ return t.indexLiteral(typeSectionMetadata.vectorOfSize.value);
116
+ };
117
+
118
+ /**
119
+ * Get next func index
120
+ *
121
+ * The Func section metadata provide informations for implemented funcs
122
+ * in order to have the correct index we shift the index by number of external
123
+ * functions.
124
+ *
125
+ * @param {Object} ast Module's AST
126
+ * @param {Number} countImportedFunc number of imported funcs
127
+ * @returns {t.Index} - index
128
+ */
129
+ const getNextFuncIndex = (ast, countImportedFunc) => {
130
+ const funcSectionMetadata = t.getSectionMetadata(ast, "func");
131
+
132
+ if (funcSectionMetadata === undefined) {
133
+ return t.indexLiteral(0 + countImportedFunc);
134
+ }
135
+
136
+ const vectorOfSize = funcSectionMetadata.vectorOfSize.value;
137
+
138
+ return t.indexLiteral(vectorOfSize + countImportedFunc);
139
+ };
140
+
141
+ /**
142
+ * Creates an init instruction for a global type
143
+ * @param {t.GlobalType} globalType the global type
144
+ * @returns {t.Instruction} init expression
145
+ */
146
+ const createDefaultInitForGlobal = globalType => {
147
+ if (globalType.valtype[0] === "i") {
148
+ // create NumberLiteral global initializer
149
+ return t.objectInstruction("const", globalType.valtype, [
150
+ t.numberLiteralFromRaw(66)
151
+ ]);
152
+ } else if (globalType.valtype[0] === "f") {
153
+ // create FloatLiteral global initializer
154
+ return t.objectInstruction("const", globalType.valtype, [
155
+ t.floatLiteral(66, false, false, "66")
156
+ ]);
157
+ } else {
158
+ throw new Error("unknown type: " + globalType.valtype);
159
+ }
160
+ };
161
+
162
+ /**
163
+ * Rewrite the import globals:
164
+ * - removes the ModuleImport instruction
165
+ * - injects at the same offset a mutable global of the same type
166
+ *
167
+ * Since the imported globals are before the other global declarations, our
168
+ * indices will be preserved.
169
+ *
170
+ * Note that globals will become mutable.
171
+ *
172
+ * @param {Object} state unused state
173
+ * @returns {ArrayBufferTransform} transform
174
+ */
175
+ const rewriteImportedGlobals = state => bin => {
176
+ const additionalInitCode = state.additionalInitCode;
177
+ const newGlobals = [];
178
+
179
+ bin = editWithAST(state.ast, bin, {
180
+ ModuleImport(path) {
181
+ if (t.isGlobalType(path.node.descr)) {
182
+ const globalType = path.node.descr;
183
+
184
+ globalType.mutability = "var";
185
+
186
+ const init = [
187
+ createDefaultInitForGlobal(globalType),
188
+ t.instruction("end")
189
+ ];
190
+
191
+ newGlobals.push(t.global(globalType, init));
192
+
193
+ path.remove();
194
+ }
195
+ },
196
+
197
+ // in order to preserve non-imported global's order we need to re-inject
198
+ // those as well
199
+ Global(path) {
200
+ const { node } = path;
201
+ const [init] = node.init;
202
+
203
+ if (init.id === "get_global") {
204
+ node.globalType.mutability = "var";
205
+
206
+ const initialGlobalidx = init.args[0];
207
+
208
+ node.init = [
209
+ createDefaultInitForGlobal(node.globalType),
210
+ t.instruction("end")
211
+ ];
212
+
213
+ additionalInitCode.push(
214
+ /**
215
+ * get_global in global initializer only works for imported globals.
216
+ * They have the same indices as the init params, so use the
217
+ * same index.
218
+ */
219
+ t.instruction("get_local", [initialGlobalidx]),
220
+ t.instruction("set_global", [t.indexLiteral(newGlobals.length)])
221
+ );
222
+ }
223
+
224
+ newGlobals.push(node);
225
+
226
+ path.remove();
227
+ }
228
+ });
229
+
230
+ // Add global declaration instructions
231
+ return addWithAST(state.ast, bin, newGlobals);
232
+ };
233
+
234
+ /**
235
+ * Rewrite the export names
236
+ * @param {Object} state state
237
+ * @param {Object} state.ast Module's ast
238
+ * @param {Module} state.module Module
239
+ * @param {Set<string>} state.externalExports Module
240
+ * @returns {ArrayBufferTransform} transform
241
+ */
242
+ const rewriteExportNames = ({ ast, module, externalExports }) => bin => {
243
+ return editWithAST(ast, bin, {
244
+ ModuleExport(path) {
245
+ const isExternal = externalExports.has(path.node.name);
246
+ if (isExternal) {
247
+ path.remove();
248
+ return;
249
+ }
250
+ const usedName = module.isUsed(path.node.name);
251
+ if (!usedName) {
252
+ path.remove();
253
+ return;
254
+ }
255
+ path.node.name = usedName;
256
+ }
257
+ });
258
+ };
259
+
260
+ /**
261
+ * Mangle import names and modules
262
+ * @param {Object} state state
263
+ * @param {Object} state.ast Module's ast
264
+ * @param {Map<string, UsedWasmDependency>} state.usedDependencyMap mappings to mangle names
265
+ * @returns {ArrayBufferTransform} transform
266
+ */
267
+ const rewriteImports = ({ ast, usedDependencyMap }) => bin => {
268
+ return editWithAST(ast, bin, {
269
+ ModuleImport(path) {
270
+ const result = usedDependencyMap.get(
271
+ path.node.module + ":" + path.node.name
272
+ );
273
+
274
+ if (result !== undefined) {
275
+ path.node.module = result.module;
276
+ path.node.name = result.name;
277
+ }
278
+ }
279
+ });
280
+ };
281
+
282
+ /**
283
+ * Add an init function.
284
+ *
285
+ * The init function fills the globals given input arguments.
286
+ *
287
+ * @param {Object} state transformation state
288
+ * @param {Object} state.ast Module's ast
289
+ * @param {t.Identifier} state.initFuncId identifier of the init function
290
+ * @param {t.Index} state.startAtFuncOffset index of the start function
291
+ * @param {t.ModuleImport[]} state.importedGlobals list of imported globals
292
+ * @param {t.Instruction[]} state.additionalInitCode list of addition instructions for the init function
293
+ * @param {t.Index} state.nextFuncIndex index of the next function
294
+ * @param {t.Index} state.nextTypeIndex index of the next type
295
+ * @returns {ArrayBufferTransform} transform
296
+ */
297
+ const addInitFunction = ({
298
+ ast,
299
+ initFuncId,
300
+ startAtFuncOffset,
301
+ importedGlobals,
302
+ additionalInitCode,
303
+ nextFuncIndex,
304
+ nextTypeIndex
305
+ }) => bin => {
306
+ const funcParams = importedGlobals.map(importedGlobal => {
307
+ // used for debugging
308
+ const id = t.identifier(`${importedGlobal.module}.${importedGlobal.name}`);
309
+
310
+ return t.funcParam(importedGlobal.descr.valtype, id);
311
+ });
312
+
313
+ const funcBody = importedGlobals.reduce((acc, importedGlobal, index) => {
314
+ const args = [t.indexLiteral(index)];
315
+ const body = [
316
+ t.instruction("get_local", args),
317
+ t.instruction("set_global", args)
318
+ ];
319
+
320
+ return [...acc, ...body];
321
+ }, []);
322
+
323
+ if (typeof startAtFuncOffset === "number") {
324
+ funcBody.push(t.callInstruction(t.numberLiteralFromRaw(startAtFuncOffset)));
325
+ }
326
+
327
+ for (const instr of additionalInitCode) {
328
+ funcBody.push(instr);
329
+ }
330
+
331
+ funcBody.push(t.instruction("end"));
332
+
333
+ const funcResults = [];
334
+
335
+ // Code section
336
+ const funcSignature = t.signature(funcParams, funcResults);
337
+ const func = t.func(initFuncId, funcSignature, funcBody);
338
+
339
+ // Type section
340
+ const functype = t.typeInstruction(undefined, funcSignature);
341
+
342
+ // Func section
343
+ const funcindex = t.indexInFuncSection(nextTypeIndex);
344
+
345
+ // Export section
346
+ const moduleExport = t.moduleExport(
347
+ initFuncId.value,
348
+ t.moduleExportDescr("Func", nextFuncIndex)
349
+ );
350
+
351
+ return addWithAST(ast, bin, [func, moduleExport, funcindex, functype]);
352
+ };
353
+
354
+ /**
355
+ * Extract mangle mappings from module
356
+ * @param {Module} module current module
357
+ * @param {boolean} mangle mangle imports
358
+ * @returns {Map<string, UsedWasmDependency>} mappings to mangled names
359
+ */
360
+ const getUsedDependencyMap = (module, mangle) => {
361
+ /** @type {Map<string, UsedWasmDependency>} */
362
+ const map = new Map();
363
+ for (const usedDep of WebAssemblyUtils.getUsedDependencies(module, mangle)) {
364
+ const dep = usedDep.dependency;
365
+ const request = dep.request;
366
+ const exportName = dep.name;
367
+ map.set(request + ":" + exportName, usedDep);
368
+ }
369
+ return map;
370
+ };
371
+
372
+ class WebAssemblyGenerator extends Generator {
373
+ constructor(options) {
374
+ super();
375
+ this.options = options;
376
+ }
377
+
378
+ /**
379
+ * @param {NormalModule} module module for which the code should be generated
380
+ * @param {Map<Function, DependencyTemplate>} dependencyTemplates mapping from dependencies to templates
381
+ * @param {RuntimeTemplate} runtimeTemplate the runtime template
382
+ * @param {string} type which kind of code should be generated
383
+ * @returns {Source} generated code
384
+ */
385
+ generate(module, dependencyTemplates, runtimeTemplate, type) {
386
+ let bin = module.originalSource().source();
387
+
388
+ const initFuncId = t.identifier(
389
+ Array.isArray(module.usedExports)
390
+ ? Template.numberToIdentifer(module.usedExports.length)
391
+ : "__webpack_init__"
392
+ );
393
+
394
+ // parse it
395
+ const ast = decode(bin, {
396
+ ignoreDataSection: true,
397
+ ignoreCodeSection: true,
398
+ ignoreCustomNameSection: true
399
+ });
400
+
401
+ const moduleContext = moduleContextFromModuleAST(ast.body[0]);
402
+
403
+ const importedGlobals = getImportedGlobals(ast);
404
+ const countImportedFunc = getCountImportedFunc(ast);
405
+ const startAtFuncOffset = moduleContext.getStart();
406
+ const nextFuncIndex = getNextFuncIndex(ast, countImportedFunc);
407
+ const nextTypeIndex = getNextTypeIndex(ast);
408
+
409
+ const usedDependencyMap = getUsedDependencyMap(
410
+ module,
411
+ this.options.mangleImports
412
+ );
413
+ const externalExports = new Set(
414
+ module.dependencies
415
+ .filter(d => d instanceof WebAssemblyExportImportedDependency)
416
+ .map(d => {
417
+ const wasmDep = /** @type {WebAssemblyExportImportedDependency} */ (d);
418
+ return wasmDep.exportName;
419
+ })
420
+ );
421
+
422
+ /** @type {t.Instruction[]} */
423
+ const additionalInitCode = [];
424
+
425
+ const transform = compose(
426
+ rewriteExportNames({
427
+ ast,
428
+ module,
429
+ externalExports
430
+ }),
431
+
432
+ removeStartFunc({ ast }),
433
+
434
+ rewriteImportedGlobals({ ast, additionalInitCode }),
435
+
436
+ rewriteImports({
437
+ ast,
438
+ usedDependencyMap
439
+ }),
440
+
441
+ addInitFunction({
442
+ ast,
443
+ initFuncId,
444
+ importedGlobals,
445
+ additionalInitCode,
446
+ startAtFuncOffset,
447
+ nextFuncIndex,
448
+ nextTypeIndex
449
+ })
450
+ );
451
+
452
+ const newBin = transform(bin);
453
+
454
+ return new RawSource(newBin);
455
+ }
456
+ }
457
+
458
+ module.exports = WebAssemblyGenerator;
@@ -0,0 +1,88 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+ "use strict";
5
+
6
+ const WebpackError = require("../WebpackError");
7
+
8
+ /** @typedef {import("../Module")} Module */
9
+ /** @typedef {import("../RequestShortener")} RequestShortener */
10
+
11
+ /**
12
+ * @param {Module} module module to get chains from
13
+ * @param {RequestShortener} requestShortener to make readable identifiers
14
+ * @returns {string[]} all chains to the module
15
+ */
16
+ const getInitialModuleChains = (module, requestShortener) => {
17
+ const queue = [
18
+ { head: module, message: module.readableIdentifier(requestShortener) }
19
+ ];
20
+ /** @type {Set<string>} */
21
+ const results = new Set();
22
+ /** @type {Set<string>} */
23
+ const incompleteResults = new Set();
24
+ /** @type {Set<Module>} */
25
+ const visitedModules = new Set();
26
+
27
+ for (const chain of queue) {
28
+ const { head, message } = chain;
29
+ let final = true;
30
+ /** @type {Set<Module>} */
31
+ const alreadyReferencedModules = new Set();
32
+ for (const reason of head.reasons) {
33
+ const newHead = reason.module;
34
+ if (newHead) {
35
+ if (!newHead.getChunks().some(c => c.canBeInitial())) continue;
36
+ final = false;
37
+ if (alreadyReferencedModules.has(newHead)) continue;
38
+ alreadyReferencedModules.add(newHead);
39
+ const moduleName = newHead.readableIdentifier(requestShortener);
40
+ const detail = reason.explanation ? ` (${reason.explanation})` : "";
41
+ const newMessage = `${moduleName}${detail} --> ${message}`;
42
+ if (visitedModules.has(newHead)) {
43
+ incompleteResults.add(`... --> ${newMessage}`);
44
+ continue;
45
+ }
46
+ visitedModules.add(newHead);
47
+ queue.push({
48
+ head: newHead,
49
+ message: newMessage
50
+ });
51
+ } else {
52
+ final = false;
53
+ const newMessage = reason.explanation
54
+ ? `(${reason.explanation}) --> ${message}`
55
+ : message;
56
+ results.add(newMessage);
57
+ }
58
+ }
59
+ if (final) {
60
+ results.add(message);
61
+ }
62
+ }
63
+ for (const result of incompleteResults) {
64
+ results.add(result);
65
+ }
66
+ return Array.from(results);
67
+ };
68
+
69
+ module.exports = class WebAssemblyInInitialChunkError extends WebpackError {
70
+ /**
71
+ * @param {Module} module WASM module
72
+ * @param {RequestShortener} requestShortener request shortener
73
+ */
74
+ constructor(module, requestShortener) {
75
+ const moduleChains = getInitialModuleChains(module, requestShortener);
76
+ const message = `WebAssembly module is included in initial chunk.
77
+ This is not allowed, because WebAssembly download and compilation must happen asynchronous.
78
+ Add an async splitpoint (i. e. import()) somewhere between your entrypoint and the WebAssembly module:
79
+ ${moduleChains.map(s => `* ${s}`).join("\n")}`;
80
+
81
+ super(message);
82
+ this.name = "WebAssemblyInInitialChunkError";
83
+ this.hideStack = true;
84
+ this.module = module;
85
+
86
+ Error.captureStackTrace(this, this.constructor);
87
+ }
88
+ };
@@ -0,0 +1,152 @@
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 Template = require("../Template");
9
+ const { RawSource } = require("webpack-sources");
10
+ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
11
+ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
12
+
13
+ /** @typedef {import("../NormalModule")} NormalModule */
14
+ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
15
+ /** @typedef {import("webpack-sources").Source} Source */
16
+ /** @typedef {import("../Dependency").DependencyTemplate} DependencyTemplate */
17
+
18
+ class WebAssemblyJavascriptGenerator extends Generator {
19
+ /**
20
+ * @param {NormalModule} module module for which the code should be generated
21
+ * @param {Map<Function, DependencyTemplate>} dependencyTemplates mapping from dependencies to templates
22
+ * @param {RuntimeTemplate} runtimeTemplate the runtime template
23
+ * @param {string} type which kind of code should be generated
24
+ * @returns {Source} generated code
25
+ */
26
+ generate(module, dependencyTemplates, runtimeTemplate, type) {
27
+ const initIdentifer = Array.isArray(module.usedExports)
28
+ ? Template.numberToIdentifer(module.usedExports.length)
29
+ : "__webpack_init__";
30
+
31
+ let needExportsCopy = false;
32
+ const importedModules = new Map();
33
+ const initParams = [];
34
+ let index = 0;
35
+ for (const dep of module.dependencies) {
36
+ const depAsAny = /** @type {any} */ (dep);
37
+ if (dep.module) {
38
+ let importData = importedModules.get(dep.module);
39
+ if (importData === undefined) {
40
+ importedModules.set(
41
+ dep.module,
42
+ (importData = {
43
+ importVar: `m${index}`,
44
+ index,
45
+ request:
46
+ "userRequest" in depAsAny ? depAsAny.userRequest : undefined,
47
+ names: new Set(),
48
+ reexports: []
49
+ })
50
+ );
51
+ index++;
52
+ }
53
+ if (dep instanceof WebAssemblyImportDependency) {
54
+ importData.names.add(dep.name);
55
+ if (dep.description.type === "GlobalType") {
56
+ const exportName = dep.name;
57
+ const usedName = dep.module && dep.module.isUsed(exportName);
58
+
59
+ if (dep.module) {
60
+ if (usedName) {
61
+ initParams.push(
62
+ runtimeTemplate.exportFromImport({
63
+ module: dep.module,
64
+ request: dep.request,
65
+ importVar: importData.importVar,
66
+ originModule: module,
67
+ exportName: dep.name,
68
+ asiSafe: true,
69
+ isCall: false,
70
+ callContext: null
71
+ })
72
+ );
73
+ }
74
+ }
75
+ }
76
+ }
77
+ if (dep instanceof WebAssemblyExportImportedDependency) {
78
+ importData.names.add(dep.name);
79
+ const usedName = module.isUsed(dep.exportName);
80
+ if (usedName) {
81
+ const exportProp = `${module.exportsArgument}[${JSON.stringify(
82
+ usedName
83
+ )}]`;
84
+ const defineStatement = Template.asString([
85
+ `${exportProp} = ${runtimeTemplate.exportFromImport({
86
+ module: dep.module,
87
+ request: dep.request,
88
+ importVar: importData.importVar,
89
+ originModule: module,
90
+ exportName: dep.name,
91
+ asiSafe: true,
92
+ isCall: false,
93
+ callContext: null
94
+ })};`,
95
+ `if(WebAssembly.Global) ${exportProp} = ` +
96
+ `new WebAssembly.Global({ value: ${JSON.stringify(
97
+ dep.valueType
98
+ )} }, ${exportProp});`
99
+ ]);
100
+ importData.reexports.push(defineStatement);
101
+ needExportsCopy = true;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ const importsCode = Template.asString(
107
+ Array.from(
108
+ importedModules,
109
+ ([module, { importVar, request, reexports }]) => {
110
+ const importStatement = runtimeTemplate.importStatement({
111
+ module,
112
+ request,
113
+ importVar,
114
+ originModule: module
115
+ });
116
+ return importStatement + reexports.join("\n");
117
+ }
118
+ )
119
+ );
120
+
121
+ // create source
122
+ const source = new RawSource(
123
+ [
124
+ '"use strict";',
125
+ "// Instantiate WebAssembly module",
126
+ "var wasmExports = __webpack_require__.w[module.i];",
127
+
128
+ !Array.isArray(module.usedExports)
129
+ ? `__webpack_require__.r(${module.exportsArgument});`
130
+ : "",
131
+
132
+ // this must be before import for circular dependencies
133
+ "// export exports from WebAssembly module",
134
+ Array.isArray(module.usedExports) && !needExportsCopy
135
+ ? `${module.moduleArgument}.exports = wasmExports;`
136
+ : "for(var name in wasmExports) " +
137
+ `if(name != ${JSON.stringify(initIdentifer)}) ` +
138
+ `${module.exportsArgument}[name] = wasmExports[name];`,
139
+ "// exec imports from WebAssembly module (for esm order)",
140
+ importsCode,
141
+ "",
142
+ "// exec wasm module",
143
+ `wasmExports[${JSON.stringify(initIdentifer)}](${initParams.join(
144
+ ", "
145
+ )})`
146
+ ].join("\n")
147
+ );
148
+ return source;
149
+ }
150
+ }
151
+
152
+ module.exports = WebAssemblyJavascriptGenerator;