webpack 4.16.0 → 4.16.4

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 (71) hide show
  1. package/README.md +5 -2
  2. package/SECURITY.md +9 -9
  3. package/buildin/global.js +20 -20
  4. package/buildin/module.js +22 -22
  5. package/hot/log-apply-result.js +44 -44
  6. package/hot/log.js +2 -0
  7. package/lib/BasicEvaluatedExpression.js +211 -211
  8. package/lib/Chunk.js +32 -10
  9. package/lib/ChunkGroup.js +3 -3
  10. package/lib/Compilation.js +47 -11
  11. package/lib/ContextExclusionPlugin.js +11 -0
  12. package/lib/ContextModule.js +116 -30
  13. package/lib/ContextModuleFactory.js +6 -0
  14. package/lib/DefinePlugin.js +49 -0
  15. package/lib/DelegatedModule.js +5 -0
  16. package/lib/DependenciesBlock.js +1 -1
  17. package/lib/DllModule.js +6 -0
  18. package/lib/DllReferencePlugin.js +51 -3
  19. package/lib/ExternalModule.js +6 -0
  20. package/lib/Generator.js +11 -3
  21. package/lib/HotModuleReplacementPlugin.js +1 -5
  22. package/lib/MemoryOutputFileSystem.js +5 -5
  23. package/lib/Module.js +52 -12
  24. package/lib/MultiModule.js +6 -0
  25. package/lib/NodeStuffPlugin.js +18 -0
  26. package/lib/NormalModule.js +6 -0
  27. package/lib/NullFactory.js +12 -12
  28. package/lib/OptionsApply.js +10 -10
  29. package/lib/Parser.js +12 -3
  30. package/lib/RuntimeTemplate.js +12 -0
  31. package/lib/Stats.js +19 -2
  32. package/lib/Template.js +44 -43
  33. package/lib/WatchIgnorePlugin.js +18 -18
  34. package/lib/debug/ProfilingPlugin.js +1 -1
  35. package/lib/dependencies/AMDRequireItemDependency.js +22 -22
  36. package/lib/dependencies/CommonJsRequireDependency.js +22 -22
  37. package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +6 -0
  38. package/lib/dependencies/CriticalDependencyWarning.js +20 -20
  39. package/lib/dependencies/DelegatedSourceDependency.js +18 -18
  40. package/lib/dependencies/DllEntryDependency.js +20 -20
  41. package/lib/dependencies/LocalModule.js +23 -23
  42. package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
  43. package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
  44. package/lib/dependencies/PrefetchDependency.js +18 -18
  45. package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
  46. package/lib/dependencies/RequireResolveDependency.js +22 -22
  47. package/lib/node/NodeOutputFileSystem.js +22 -22
  48. package/lib/node/NodeTargetPlugin.js +1 -0
  49. package/lib/optimize/ConcatenatedModule.js +5 -0
  50. package/lib/optimize/OccurrenceChunkOrderPlugin.js +1 -1
  51. package/lib/optimize/OccurrenceModuleOrderPlugin.js +1 -1
  52. package/lib/optimize/OccurrenceOrderPlugin.js +2 -2
  53. package/lib/util/SortableSet.js +1 -0
  54. package/lib/util/StackedSetMap.js +12 -3
  55. package/lib/wasm/WebAssemblyGenerator.js +22 -5
  56. package/lib/wasm/WebAssemblyJavascriptGenerator.js +16 -2
  57. package/lib/webpack.js +1 -0
  58. package/package.json +12 -20
  59. package/schemas/WebpackOptions.json +2 -6
  60. package/schemas/ajv.absolutePath.js +55 -55
  61. package/schemas/plugins/BannerPlugin.json +96 -96
  62. package/schemas/plugins/DllPlugin.json +32 -32
  63. package/schemas/plugins/DllReferencePlugin.json +99 -99
  64. package/schemas/plugins/HashedModuleIdsPlugin.json +24 -24
  65. package/schemas/plugins/LoaderOptionsPlugin.json +26 -26
  66. package/schemas/plugins/SourceMapDevToolPlugin.json +187 -187
  67. package/schemas/plugins/WatchIgnorePlugin.json +16 -16
  68. package/schemas/plugins/debug/ProfilingPlugin.json +12 -12
  69. package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +22 -22
  70. package/schemas/plugins/optimize/LimitChunkCountPlugin.json +15 -15
  71. package/schemas/plugins/optimize/MinChunkSizePlugin.json +13 -13
@@ -1,22 +1,22 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const ModuleDependency = require("./ModuleDependency");
7
- const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
8
-
9
- class CommonJsRequireDependency extends ModuleDependency {
10
- constructor(request, range) {
11
- super(request);
12
- this.range = range;
13
- }
14
-
15
- get type() {
16
- return "cjs require";
17
- }
18
- }
19
-
20
- CommonJsRequireDependency.Template = ModuleDependencyTemplateAsId;
21
-
22
- module.exports = CommonJsRequireDependency;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const ModuleDependency = require("./ModuleDependency");
7
+ const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
8
+
9
+ class CommonJsRequireDependency extends ModuleDependency {
10
+ constructor(request, range) {
11
+ super(request);
12
+ this.range = range;
13
+ }
14
+
15
+ get type() {
16
+ return "cjs require";
17
+ }
18
+ }
19
+
20
+ CommonJsRequireDependency.Template = ModuleDependencyTemplateAsId;
21
+
22
+ module.exports = CommonJsRequireDependency;
@@ -125,6 +125,12 @@ class CommonJsRequireDependencyParserPlugin {
125
125
  parser.hooks.new
126
126
  .for("require")
127
127
  .tap("CommonJsRequireDependencyParserPlugin", createHandler(true));
128
+ parser.hooks.call
129
+ .for("module.require")
130
+ .tap("CommonJsRequireDependencyParserPlugin", createHandler(false));
131
+ parser.hooks.new
132
+ .for("module.require")
133
+ .tap("CommonJsRequireDependencyParserPlugin", createHandler(true));
128
134
  }
129
135
  }
130
136
  module.exports = CommonJsRequireDependencyParserPlugin;
@@ -1,20 +1,20 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const WebpackError = require("../WebpackError");
8
-
9
- class CriticalDependencyWarning extends WebpackError {
10
- constructor(message) {
11
- super();
12
-
13
- this.name = "CriticalDependencyWarning";
14
- this.message = "Critical dependency: " + message;
15
-
16
- Error.captureStackTrace(this, this.constructor);
17
- }
18
- }
19
-
20
- module.exports = CriticalDependencyWarning;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const WebpackError = require("../WebpackError");
8
+
9
+ class CriticalDependencyWarning extends WebpackError {
10
+ constructor(message) {
11
+ super();
12
+
13
+ this.name = "CriticalDependencyWarning";
14
+ this.message = "Critical dependency: " + message;
15
+
16
+ Error.captureStackTrace(this, this.constructor);
17
+ }
18
+ }
19
+
20
+ module.exports = CriticalDependencyWarning;
@@ -1,18 +1,18 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const ModuleDependency = require("./ModuleDependency");
7
-
8
- class DelegatedSourceDependency extends ModuleDependency {
9
- constructor(request) {
10
- super(request);
11
- }
12
-
13
- get type() {
14
- return "delegated source";
15
- }
16
- }
17
-
18
- module.exports = DelegatedSourceDependency;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const ModuleDependency = require("./ModuleDependency");
7
+
8
+ class DelegatedSourceDependency extends ModuleDependency {
9
+ constructor(request) {
10
+ super(request);
11
+ }
12
+
13
+ get type() {
14
+ return "delegated source";
15
+ }
16
+ }
17
+
18
+ module.exports = DelegatedSourceDependency;
@@ -1,20 +1,20 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const Dependency = require("../Dependency");
7
-
8
- class DllEntryDependency extends Dependency {
9
- constructor(dependencies, name) {
10
- super();
11
- this.dependencies = dependencies;
12
- this.name = name;
13
- }
14
-
15
- get type() {
16
- return "dll entry";
17
- }
18
- }
19
-
20
- module.exports = DllEntryDependency;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const Dependency = require("../Dependency");
7
+
8
+ class DllEntryDependency extends Dependency {
9
+ constructor(dependencies, name) {
10
+ super();
11
+ this.dependencies = dependencies;
12
+ this.name = name;
13
+ }
14
+
15
+ get type() {
16
+ return "dll entry";
17
+ }
18
+ }
19
+
20
+ module.exports = DllEntryDependency;
@@ -1,23 +1,23 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class LocalModule {
8
- constructor(module, name, idx) {
9
- this.module = module;
10
- this.name = name;
11
- this.idx = idx;
12
- this.used = false;
13
- }
14
-
15
- flagUsed() {
16
- this.used = true;
17
- }
18
-
19
- variableName() {
20
- return "__WEBPACK_LOCAL_MODULE_" + this.idx + "__";
21
- }
22
- }
23
- module.exports = LocalModule;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class LocalModule {
8
+ constructor(module, name, idx) {
9
+ this.module = module;
10
+ this.name = name;
11
+ this.idx = idx;
12
+ this.used = false;
13
+ }
14
+
15
+ flagUsed() {
16
+ this.used = true;
17
+ }
18
+
19
+ variableName() {
20
+ return "__WEBPACK_LOCAL_MODULE_" + this.idx + "__";
21
+ }
22
+ }
23
+ module.exports = LocalModule;
@@ -1,23 +1,23 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const ModuleDependency = require("./ModuleDependency");
7
- const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
8
-
9
- class ModuleHotAcceptDependency extends ModuleDependency {
10
- constructor(request, range) {
11
- super(request);
12
- this.range = range;
13
- this.weak = true;
14
- }
15
-
16
- get type() {
17
- return "module.hot.accept";
18
- }
19
- }
20
-
21
- ModuleHotAcceptDependency.Template = ModuleDependencyTemplateAsId;
22
-
23
- module.exports = ModuleHotAcceptDependency;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const ModuleDependency = require("./ModuleDependency");
7
+ const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
8
+
9
+ class ModuleHotAcceptDependency extends ModuleDependency {
10
+ constructor(request, range) {
11
+ super(request);
12
+ this.range = range;
13
+ this.weak = true;
14
+ }
15
+
16
+ get type() {
17
+ return "module.hot.accept";
18
+ }
19
+ }
20
+
21
+ ModuleHotAcceptDependency.Template = ModuleDependencyTemplateAsId;
22
+
23
+ module.exports = ModuleHotAcceptDependency;
@@ -1,23 +1,23 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const ModuleDependency = require("./ModuleDependency");
7
- const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
8
-
9
- class ModuleHotDeclineDependency extends ModuleDependency {
10
- constructor(request, range) {
11
- super(request);
12
- this.range = range;
13
- this.weak = true;
14
- }
15
-
16
- get type() {
17
- return "module.hot.decline";
18
- }
19
- }
20
-
21
- ModuleHotDeclineDependency.Template = ModuleDependencyTemplateAsId;
22
-
23
- module.exports = ModuleHotDeclineDependency;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const ModuleDependency = require("./ModuleDependency");
7
+ const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
8
+
9
+ class ModuleHotDeclineDependency extends ModuleDependency {
10
+ constructor(request, range) {
11
+ super(request);
12
+ this.range = range;
13
+ this.weak = true;
14
+ }
15
+
16
+ get type() {
17
+ return "module.hot.decline";
18
+ }
19
+ }
20
+
21
+ ModuleHotDeclineDependency.Template = ModuleDependencyTemplateAsId;
22
+
23
+ module.exports = ModuleHotDeclineDependency;
@@ -1,18 +1,18 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const ModuleDependency = require("./ModuleDependency");
7
-
8
- class PrefetchDependency extends ModuleDependency {
9
- constructor(request) {
10
- super(request);
11
- }
12
-
13
- get type() {
14
- return "prefetch";
15
- }
16
- }
17
-
18
- module.exports = PrefetchDependency;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const ModuleDependency = require("./ModuleDependency");
7
+
8
+ class PrefetchDependency extends ModuleDependency {
9
+ constructor(request) {
10
+ super(request);
11
+ }
12
+
13
+ get type() {
14
+ return "prefetch";
15
+ }
16
+ }
17
+
18
+ module.exports = PrefetchDependency;
@@ -1,21 +1,21 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const ModuleDependency = require("./ModuleDependency");
7
- const NullDependency = require("./NullDependency");
8
-
9
- class RequireEnsureItemDependency extends ModuleDependency {
10
- constructor(request) {
11
- super(request);
12
- }
13
-
14
- get type() {
15
- return "require.ensure item";
16
- }
17
- }
18
-
19
- RequireEnsureItemDependency.Template = NullDependency.Template;
20
-
21
- module.exports = RequireEnsureItemDependency;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const ModuleDependency = require("./ModuleDependency");
7
+ const NullDependency = require("./NullDependency");
8
+
9
+ class RequireEnsureItemDependency extends ModuleDependency {
10
+ constructor(request) {
11
+ super(request);
12
+ }
13
+
14
+ get type() {
15
+ return "require.ensure item";
16
+ }
17
+ }
18
+
19
+ RequireEnsureItemDependency.Template = NullDependency.Template;
20
+
21
+ module.exports = RequireEnsureItemDependency;
@@ -1,22 +1,22 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const ModuleDependency = require("./ModuleDependency");
7
- const ModuleDependencyAsId = require("./ModuleDependencyTemplateAsId");
8
-
9
- class RequireResolveDependency extends ModuleDependency {
10
- constructor(request, range) {
11
- super(request);
12
- this.range = range;
13
- }
14
-
15
- get type() {
16
- return "require.resolve";
17
- }
18
- }
19
-
20
- RequireResolveDependency.Template = ModuleDependencyAsId;
21
-
22
- module.exports = RequireResolveDependency;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const ModuleDependency = require("./ModuleDependency");
7
+ const ModuleDependencyAsId = require("./ModuleDependencyTemplateAsId");
8
+
9
+ class RequireResolveDependency extends ModuleDependency {
10
+ constructor(request, range) {
11
+ super(request);
12
+ this.range = range;
13
+ }
14
+
15
+ get type() {
16
+ return "require.resolve";
17
+ }
18
+ }
19
+
20
+ RequireResolveDependency.Template = ModuleDependencyAsId;
21
+
22
+ module.exports = RequireResolveDependency;
@@ -1,22 +1,22 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const fs = require("fs");
8
- const path = require("path");
9
- const mkdirp = require("mkdirp");
10
-
11
- class NodeOutputFileSystem {
12
- constructor() {
13
- this.mkdirp = mkdirp;
14
- this.mkdir = fs.mkdir.bind(fs);
15
- this.rmdir = fs.rmdir.bind(fs);
16
- this.unlink = fs.unlink.bind(fs);
17
- this.writeFile = fs.writeFile.bind(fs);
18
- this.join = path.join.bind(path);
19
- }
20
- }
21
-
22
- module.exports = NodeOutputFileSystem;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const fs = require("fs");
8
+ const path = require("path");
9
+ const mkdirp = require("mkdirp");
10
+
11
+ class NodeOutputFileSystem {
12
+ constructor() {
13
+ this.mkdirp = mkdirp;
14
+ this.mkdir = fs.mkdir.bind(fs);
15
+ this.rmdir = fs.rmdir.bind(fs);
16
+ this.unlink = fs.unlink.bind(fs);
17
+ this.writeFile = fs.writeFile.bind(fs);
18
+ this.join = path.join.bind(path);
19
+ }
20
+ }
21
+
22
+ module.exports = NodeOutputFileSystem;
@@ -7,6 +7,7 @@
7
7
  const ExternalsPlugin = require("../ExternalsPlugin");
8
8
 
9
9
  const builtins =
10
+ // eslint-disable-next-line node/no-unsupported-features/node-builtins
10
11
  require("module").builtinModules || Object.keys(process.binding("natives"));
11
12
 
12
13
  class NodeTargetPlugin {
@@ -21,6 +21,7 @@ const createHash = require("../util/createHash");
21
21
 
22
22
  /** @typedef {import("../Dependency")} Dependency */
23
23
  /** @typedef {import("../Compilation")} Compilation */
24
+ /** @typedef {import("../util/createHash").Hash} Hash */
24
25
 
25
26
  /**
26
27
  * @typedef {Object} ConcatenationEntry
@@ -1180,6 +1181,10 @@ class ConcatenatedModule extends Module {
1180
1181
  return nameWithNumber;
1181
1182
  }
1182
1183
 
1184
+ /**
1185
+ * @param {Hash} hash the hash used to track dependencies
1186
+ * @returns {void}
1187
+ */
1183
1188
  updateHash(hash) {
1184
1189
  for (const info of this._orderedConcatenationList) {
1185
1190
  switch (info.type) {
@@ -49,7 +49,7 @@ class OccurrenceOrderChunkIdsPlugin {
49
49
  if (aOccurs < bOccurs) return 1;
50
50
  const orgA = originalOrder.get(a);
51
51
  const orgB = originalOrder.get(b);
52
- return orgB - orgA;
52
+ return orgA - orgB;
53
53
  });
54
54
  }
55
55
  );
@@ -91,7 +91,7 @@ class OccurrenceOrderModuleIdsPlugin {
91
91
  if (aOccurs < bOccurs) return 1;
92
92
  const orgA = originalOrder.get(a);
93
93
  const orgB = originalOrder.get(b);
94
- return orgB - orgA;
94
+ return orgA - orgB;
95
95
  });
96
96
  }
97
97
  );
@@ -91,7 +91,7 @@ class OccurrenceOrderPlugin {
91
91
  if (aOccurs < bOccurs) return 1;
92
92
  const orgA = originalOrder.get(a);
93
93
  const orgB = originalOrder.get(b);
94
- return orgB - orgA;
94
+ return orgA - orgB;
95
95
  });
96
96
  }
97
97
  );
@@ -124,7 +124,7 @@ class OccurrenceOrderPlugin {
124
124
  if (aOccurs < bOccurs) return 1;
125
125
  const orgA = originalOrder.get(a);
126
126
  const orgB = originalOrder.get(b);
127
- return orgB - orgA;
127
+ return orgA - orgB;
128
128
  });
129
129
  }
130
130
  );
@@ -3,6 +3,7 @@
3
3
  /**
4
4
  * A subset of Set that offers sorting functionality
5
5
  * @template T item type in set
6
+ * @extends {Set<T>}
6
7
  */
7
8
  class SortableSet extends Set {
8
9
  /**
@@ -128,8 +128,17 @@ class StackedSetMap {
128
128
  }
129
129
 
130
130
  // TODO remove in webpack 5
131
- StackedSetMap.prototype.push = util.deprecate(function(item) {
132
- this.add(item);
133
- }, "This is no longer an Array: Use add instead.");
131
+ StackedSetMap.prototype.push = util.deprecate(
132
+ /**
133
+ * @deprecated
134
+ * @this {StackedSetMap}
135
+ * @param {any} item Item to add
136
+ * @returns {void}
137
+ */
138
+ function(item) {
139
+ this.add(item);
140
+ },
141
+ "This is no longer an Array: Use add instead."
142
+ );
134
143
 
135
144
  module.exports = StackedSetMap;
@@ -21,6 +21,10 @@ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssembly
21
21
 
22
22
  /** @typedef {import("../Module")} Module */
23
23
  /** @typedef {import("./WebAssemblyUtils").UsedWasmDependency} UsedWasmDependency */
24
+ /** @typedef {import("../NormalModule")} NormalModule */
25
+ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
26
+ /** @typedef {import("webpack-sources").Source} Source */
27
+ /** @typedef {import("../Dependency").DependencyTemplate} DependencyTemplate */
24
28
 
25
29
  /**
26
30
  * @typedef {(ArrayBuffer) => ArrayBuffer} ArrayBufferTransform
@@ -43,9 +47,12 @@ const preprocess = ab => {
43
47
  * @returns {Function} composed transform
44
48
  */
45
49
  const compose = (...fns) => {
46
- return fns.reduce((prevFn, nextFn) => {
47
- return value => nextFn(prevFn(value));
48
- }, value => value);
50
+ return fns.reduce(
51
+ (prevFn, nextFn) => {
52
+ return value => nextFn(prevFn(value));
53
+ },
54
+ value => value
55
+ );
49
56
  };
50
57
 
51
58
  // TODO replace with @callback
@@ -366,7 +373,14 @@ class WebAssemblyGenerator extends Generator {
366
373
  this.options = options;
367
374
  }
368
375
 
369
- generate(module) {
376
+ /**
377
+ * @param {NormalModule} module module for which the code should be generated
378
+ * @param {Map<Function, DependencyTemplate>} dependencyTemplates mapping from dependencies to templates
379
+ * @param {RuntimeTemplate} runtimeTemplate the runtime template
380
+ * @param {string} type which kind of code should be generated
381
+ * @returns {Source} generated code
382
+ */
383
+ generate(module, dependencyTemplates, runtimeTemplate, type) {
370
384
  let bin = module.originalSource().source();
371
385
  bin = preprocess(bin);
372
386
 
@@ -398,7 +412,10 @@ class WebAssemblyGenerator extends Generator {
398
412
  const externalExports = new Set(
399
413
  module.dependencies
400
414
  .filter(d => d instanceof WebAssemblyExportImportedDependency)
401
- .map(d => d.exportName)
415
+ .map(d => {
416
+ const wasmDep = /** @type {WebAssemblyExportImportedDependency} */ (d);
417
+ return wasmDep.exportName;
418
+ })
402
419
  );
403
420
 
404
421
  /** @type {t.Instruction[]} */