webpack 3.6.0 → 3.8.1

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 (229) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +716 -716
  3. package/bin/convert-argv.js +1 -1
  4. package/bin/webpack.js +6 -0
  5. package/buildin/.eslintrc +7 -7
  6. package/buildin/amd-define.js +3 -3
  7. package/buildin/amd-options.js +2 -2
  8. package/buildin/global.js +21 -21
  9. package/buildin/harmony-module.js +24 -24
  10. package/buildin/module.js +22 -22
  11. package/buildin/system.js +7 -7
  12. package/hot/.eslintrc +9 -9
  13. package/hot/dev-server.js +53 -53
  14. package/hot/emitter.js +2 -2
  15. package/hot/log-apply-result.js +38 -38
  16. package/hot/log.js +44 -44
  17. package/hot/only-dev-server.js +71 -71
  18. package/hot/poll.js +34 -34
  19. package/hot/signal.js +51 -51
  20. package/lib/APIPlugin.js +45 -45
  21. package/lib/AsyncDependenciesBlock.js +43 -43
  22. package/lib/AsyncDependencyToInitialChunkWarning.js +21 -0
  23. package/lib/AutomaticPrefetchPlugin.js +36 -36
  24. package/lib/BasicEvaluatedExpression.js +203 -203
  25. package/lib/CaseSensitiveModulesWarning.js +49 -49
  26. package/lib/Chunk.js +3 -0
  27. package/lib/ChunkRenderError.js +24 -24
  28. package/lib/ChunkTemplate.js +36 -36
  29. package/lib/CompatibilityPlugin.js +57 -57
  30. package/lib/Compilation.js +158 -51
  31. package/lib/Compiler.js +523 -523
  32. package/lib/ConstPlugin.js +60 -60
  33. package/lib/ContextExclusionPlugin.js +17 -0
  34. package/lib/ContextModule.js +431 -431
  35. package/lib/ContextModuleFactory.js +14 -5
  36. package/lib/ContextReplacementPlugin.js +111 -111
  37. package/lib/DefinePlugin.js +123 -123
  38. package/lib/DelegatedModule.js +98 -92
  39. package/lib/DelegatedModuleFactoryPlugin.js +59 -59
  40. package/lib/DelegatedPlugin.js +30 -30
  41. package/lib/DependenciesBlockVariable.js +51 -51
  42. package/lib/DllEntryPlugin.js +37 -37
  43. package/lib/DllModule.js +58 -58
  44. package/lib/DllModuleFactory.js +20 -20
  45. package/lib/DllPlugin.js +38 -38
  46. package/lib/DllReferencePlugin.js +62 -62
  47. package/lib/DynamicEntryPlugin.js +59 -59
  48. package/lib/EntryModuleNotFoundError.js +22 -22
  49. package/lib/EntryOptionPlugin.js +31 -31
  50. package/lib/EnvironmentPlugin.js +50 -50
  51. package/lib/ErrorHelpers.js +31 -31
  52. package/lib/EvalDevToolModulePlugin.js +22 -22
  53. package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
  54. package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
  55. package/lib/EvalSourceMapDevToolPlugin.js +32 -32
  56. package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
  57. package/lib/ExtendedAPIPlugin.js +47 -47
  58. package/lib/ExternalModule.js +7 -0
  59. package/lib/ExternalModuleFactoryPlugin.js +91 -91
  60. package/lib/ExternalsPlugin.js +21 -21
  61. package/lib/FlagDependencyExportsPlugin.js +101 -101
  62. package/lib/FunctionModulePlugin.js +24 -24
  63. package/lib/FunctionModuleTemplatePlugin.js +7 -3
  64. package/lib/HashedModuleIdsPlugin.js +42 -42
  65. package/lib/HotUpdateChunkTemplate.js +31 -31
  66. package/lib/IgnorePlugin.js +69 -69
  67. package/lib/JsonpExportMainTemplatePlugin.js +37 -37
  68. package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
  69. package/lib/JsonpMainTemplate.runtime.js +2 -1
  70. package/lib/JsonpMainTemplatePlugin.js +2 -0
  71. package/lib/JsonpTemplatePlugin.js +21 -21
  72. package/lib/LibManifestPlugin.js +63 -63
  73. package/lib/LibraryTemplatePlugin.js +92 -92
  74. package/lib/LoaderOptionsPlugin.js +36 -36
  75. package/lib/LoaderTargetPlugin.js +19 -19
  76. package/lib/MemoryOutputFileSystem.js +5 -5
  77. package/lib/ModuleBuildError.js +42 -42
  78. package/lib/ModuleDependencyError.js +22 -22
  79. package/lib/ModuleDependencyWarning.js +22 -22
  80. package/lib/ModuleError.js +24 -24
  81. package/lib/ModuleFilenameHelpers.js +162 -162
  82. package/lib/ModuleNotFoundError.js +26 -26
  83. package/lib/ModuleParseError.js +1 -1
  84. package/lib/ModuleReason.js +50 -50
  85. package/lib/ModuleTemplate.js +23 -23
  86. package/lib/ModuleWarning.js +24 -24
  87. package/lib/MovedToPluginWarningPlugin.js +21 -21
  88. package/lib/MultiCompiler.js +164 -164
  89. package/lib/MultiEntryPlugin.js +39 -39
  90. package/lib/MultiModuleFactory.js +19 -19
  91. package/lib/MultiStats.js +79 -79
  92. package/lib/MultiWatching.js +32 -32
  93. package/lib/NamedChunksPlugin.js +30 -30
  94. package/lib/NamedModulesPlugin.js +27 -27
  95. package/lib/NewWatchingPlugin.js +15 -15
  96. package/lib/NoEmitOnErrorsPlugin.js +22 -22
  97. package/lib/NoErrorsPlugin.js +29 -29
  98. package/lib/NodeStuffPlugin.js +97 -97
  99. package/lib/NormalModuleReplacementPlugin.js +45 -45
  100. package/lib/NullFactory.js +12 -12
  101. package/lib/OptionsApply.js +10 -10
  102. package/lib/Parser.js +65 -34
  103. package/lib/ParserHelpers.js +85 -85
  104. package/lib/PrefetchPlugin.js +31 -31
  105. package/lib/ProgressPlugin.js +192 -192
  106. package/lib/ProvidePlugin.js +55 -55
  107. package/lib/RawModule.js +54 -54
  108. package/lib/RequestShortener.js +63 -63
  109. package/lib/RequireJsStuffPlugin.js +31 -31
  110. package/lib/RuleSet.js +444 -444
  111. package/lib/SetVarMainTemplatePlugin.js +41 -41
  112. package/lib/SingleEntryPlugin.js +35 -35
  113. package/lib/SizeFormatHelpers.js +18 -18
  114. package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
  115. package/lib/Stats.js +27 -8
  116. package/lib/UmdMainTemplatePlugin.js +1 -1
  117. package/lib/UnsupportedFeatureWarning.js +21 -21
  118. package/lib/UseStrictPlugin.js +34 -34
  119. package/lib/WarnCaseSensitiveModulesPlugin.js +31 -31
  120. package/lib/WatchIgnorePlugin.js +49 -49
  121. package/lib/WebpackError.js +11 -11
  122. package/lib/WebpackOptionsDefaulter.js +129 -129
  123. package/lib/WebpackOptionsValidationError.js +196 -196
  124. package/lib/compareLocations.js +36 -36
  125. package/lib/dependencies/AMDDefineDependency.js +142 -142
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +5 -1
  127. package/lib/dependencies/AMDPlugin.js +119 -119
  128. package/lib/dependencies/AMDRequireArrayDependency.js +2 -0
  129. package/lib/dependencies/AMDRequireContextDependency.js +0 -9
  130. package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
  131. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
  132. package/lib/dependencies/AMDRequireDependency.js +67 -67
  133. package/lib/dependencies/AMDRequireItemDependency.js +22 -22
  134. package/lib/dependencies/CommonJsRequireContextDependency.js +0 -10
  135. package/lib/dependencies/CommonJsRequireDependency.js +22 -22
  136. package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
  137. package/lib/dependencies/ConstDependency.js +32 -32
  138. package/lib/dependencies/ContextDependency.js +20 -0
  139. package/lib/dependencies/ContextDependencyHelpers.js +71 -71
  140. package/lib/dependencies/ContextElementDependency.js +21 -21
  141. package/lib/dependencies/CriticalDependencyWarning.js +20 -20
  142. package/lib/dependencies/DelegatedExportsDependency.js +33 -33
  143. package/lib/dependencies/DelegatedSourceDependency.js +18 -18
  144. package/lib/dependencies/DllEntryDependency.js +20 -20
  145. package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
  146. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +14 -2
  147. package/lib/dependencies/HarmonyExportExpressionDependency.js +0 -7
  148. package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
  149. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +45 -45
  150. package/lib/dependencies/HarmonyExportSpecifierDependency.js +0 -13
  151. package/lib/dependencies/HarmonyModulesHelpers.js +0 -53
  152. package/lib/dependencies/ImportContextDependency.js +0 -10
  153. package/lib/dependencies/ImportDependenciesBlock.js +17 -17
  154. package/lib/dependencies/ImportEagerContextDependency.js +22 -22
  155. package/lib/dependencies/ImportLazyContextDependency.js +22 -22
  156. package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
  157. package/lib/dependencies/ImportParserPlugin.js +89 -89
  158. package/lib/dependencies/ImportPlugin.js +60 -60
  159. package/lib/dependencies/ImportWeakContextDependency.js +22 -22
  160. package/lib/dependencies/LoaderDependency.js +18 -18
  161. package/lib/dependencies/LoaderPlugin.js +60 -60
  162. package/lib/dependencies/LocalModule.js +23 -23
  163. package/lib/dependencies/LocalModuleDependency.js +24 -24
  164. package/lib/dependencies/LocalModulesHelpers.js +46 -46
  165. package/lib/dependencies/ModuleDependency.js +23 -23
  166. package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
  167. package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
  168. package/lib/dependencies/MultiEntryDependency.js +20 -20
  169. package/lib/dependencies/NullDependency.js +24 -24
  170. package/lib/dependencies/PrefetchDependency.js +18 -18
  171. package/lib/dependencies/RequireContextDependency.js +26 -26
  172. package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
  173. package/lib/dependencies/RequireContextPlugin.js +96 -96
  174. package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
  175. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
  176. package/lib/dependencies/RequireEnsureDependency.js +38 -38
  177. package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
  178. package/lib/dependencies/RequireEnsurePlugin.js +40 -40
  179. package/lib/dependencies/RequireHeaderDependency.js +26 -26
  180. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
  181. package/lib/dependencies/RequireIncludePlugin.js +33 -33
  182. package/lib/dependencies/RequireResolveContextDependency.js +0 -10
  183. package/lib/dependencies/RequireResolveDependency.js +22 -22
  184. package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
  185. package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
  186. package/lib/dependencies/SingleEntryDependency.js +18 -18
  187. package/lib/dependencies/SystemPlugin.js +44 -44
  188. package/lib/dependencies/UnsupportedDependency.js +23 -23
  189. package/lib/dependencies/WebpackMissingModule.js +18 -18
  190. package/lib/dependencies/getFunctionExpression.js +44 -44
  191. package/lib/formatLocation.js +54 -54
  192. package/lib/node/NodeChunkTemplatePlugin.js +27 -27
  193. package/lib/node/NodeEnvironmentPlugin.js +25 -25
  194. package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
  195. package/lib/node/NodeMainTemplate.runtime.js +24 -24
  196. package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
  197. package/lib/node/NodeOutputFileSystem.js +22 -22
  198. package/lib/node/NodeSourcePlugin.js +88 -88
  199. package/lib/node/NodeTargetPlugin.js +15 -15
  200. package/lib/node/NodeTemplatePlugin.js +27 -27
  201. package/lib/node/NodeWatchFileSystem.js +72 -72
  202. package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
  203. package/lib/optimize/CommonsChunkPlugin.js +40 -19
  204. package/lib/optimize/ConcatenatedModule.js +27 -24
  205. package/lib/optimize/DedupePlugin.js +15 -15
  206. package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
  207. package/lib/optimize/LimitChunkCountPlugin.js +59 -59
  208. package/lib/optimize/MinChunkSizePlugin.js +65 -65
  209. package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
  210. package/lib/optimize/UglifyJsPlugin.js +9 -9
  211. package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
  212. package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
  213. package/lib/performance/NoAsyncChunksWarning.js +20 -20
  214. package/lib/performance/SizeLimitsPlugin.js +102 -102
  215. package/lib/prepareOptions.js +29 -29
  216. package/lib/removeAndDo.js +15 -15
  217. package/lib/util/Queue.js +42 -0
  218. package/lib/util/Semaphore.js +32 -32
  219. package/lib/util/identifier.js +38 -38
  220. package/lib/validateSchema.js +66 -66
  221. package/lib/web/WebEnvironmentPlugin.js +18 -18
  222. package/lib/webpack.js +1 -0
  223. package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
  224. package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
  225. package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
  226. package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
  227. package/package.json +1 -1
  228. package/schemas/ajv.absolutePath.js +29 -29
  229. package/schemas/webpackOptionsSchema.json +69 -0
@@ -1,91 +1,91 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const ExternalModule = require("./ExternalModule");
8
-
9
- class ExternalModuleFactoryPlugin {
10
- constructor(type, externals) {
11
- this.type = type;
12
- this.externals = externals;
13
- }
14
-
15
- apply(normalModuleFactory) {
16
- const globalType = this.type;
17
- normalModuleFactory.plugin("factory", factory => (data, callback) => {
18
- const context = data.context;
19
- const dependency = data.dependencies[0];
20
-
21
- function handleExternal(value, type, callback) {
22
- if(typeof type === "function") {
23
- callback = type;
24
- type = undefined;
25
- }
26
- if(value === false) return factory(data, callback);
27
- if(value === true) value = dependency.request;
28
- if(typeof type === "undefined" && /^[a-z0-9]+ /.test(value)) {
29
- const idx = value.indexOf(" ");
30
- type = value.substr(0, idx);
31
- value = value.substr(idx + 1);
32
- }
33
- callback(null, new ExternalModule(value, type || globalType, dependency.request));
34
- return true;
35
- }
36
- (function handleExternals(externals, callback) {
37
- if(typeof externals === "string") {
38
- if(externals === dependency.request) {
39
- return handleExternal(dependency.request, callback);
40
- }
41
- } else if(Array.isArray(externals)) {
42
- let i = 0;
43
- (function next() {
44
- let asyncFlag;
45
- const handleExternalsAndCallback = function handleExternalsAndCallback(err, module) {
46
- if(err) return callback(err);
47
- if(!module) {
48
- if(asyncFlag) {
49
- asyncFlag = false;
50
- return;
51
- }
52
- return next();
53
- }
54
- callback(null, module);
55
- };
56
-
57
- do {
58
- asyncFlag = true;
59
- if(i >= externals.length) return callback();
60
- handleExternals(externals[i++], handleExternalsAndCallback);
61
- } while (!asyncFlag); // eslint-disable-line keyword-spacing
62
- asyncFlag = false;
63
- }());
64
- return;
65
- } else if(externals instanceof RegExp) {
66
- if(externals.test(dependency.request)) {
67
- return handleExternal(dependency.request, callback);
68
- }
69
- } else if(typeof externals === "function") {
70
- externals.call(null, context, dependency.request, function(err, value, type) {
71
- if(err) return callback(err);
72
- if(typeof value !== "undefined") {
73
- handleExternal(value, type, callback);
74
- } else {
75
- callback();
76
- }
77
- });
78
- return;
79
- } else if(typeof externals === "object" && Object.prototype.hasOwnProperty.call(externals, dependency.request)) {
80
- return handleExternal(externals[dependency.request], callback);
81
- }
82
- callback();
83
- }(this.externals, function(err, module) {
84
- if(err) return callback(err);
85
- if(!module) return handleExternal(false, callback);
86
- return callback(null, module);
87
- }));
88
- });
89
- }
90
- }
91
- module.exports = ExternalModuleFactoryPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const ExternalModule = require("./ExternalModule");
8
+
9
+ class ExternalModuleFactoryPlugin {
10
+ constructor(type, externals) {
11
+ this.type = type;
12
+ this.externals = externals;
13
+ }
14
+
15
+ apply(normalModuleFactory) {
16
+ const globalType = this.type;
17
+ normalModuleFactory.plugin("factory", factory => (data, callback) => {
18
+ const context = data.context;
19
+ const dependency = data.dependencies[0];
20
+
21
+ function handleExternal(value, type, callback) {
22
+ if(typeof type === "function") {
23
+ callback = type;
24
+ type = undefined;
25
+ }
26
+ if(value === false) return factory(data, callback);
27
+ if(value === true) value = dependency.request;
28
+ if(typeof type === "undefined" && /^[a-z0-9]+ /.test(value)) {
29
+ const idx = value.indexOf(" ");
30
+ type = value.substr(0, idx);
31
+ value = value.substr(idx + 1);
32
+ }
33
+ callback(null, new ExternalModule(value, type || globalType, dependency.request));
34
+ return true;
35
+ }
36
+ (function handleExternals(externals, callback) {
37
+ if(typeof externals === "string") {
38
+ if(externals === dependency.request) {
39
+ return handleExternal(dependency.request, callback);
40
+ }
41
+ } else if(Array.isArray(externals)) {
42
+ let i = 0;
43
+ (function next() {
44
+ let asyncFlag;
45
+ const handleExternalsAndCallback = function handleExternalsAndCallback(err, module) {
46
+ if(err) return callback(err);
47
+ if(!module) {
48
+ if(asyncFlag) {
49
+ asyncFlag = false;
50
+ return;
51
+ }
52
+ return next();
53
+ }
54
+ callback(null, module);
55
+ };
56
+
57
+ do {
58
+ asyncFlag = true;
59
+ if(i >= externals.length) return callback();
60
+ handleExternals(externals[i++], handleExternalsAndCallback);
61
+ } while (!asyncFlag); // eslint-disable-line keyword-spacing
62
+ asyncFlag = false;
63
+ }());
64
+ return;
65
+ } else if(externals instanceof RegExp) {
66
+ if(externals.test(dependency.request)) {
67
+ return handleExternal(dependency.request, callback);
68
+ }
69
+ } else if(typeof externals === "function") {
70
+ externals.call(null, context, dependency.request, function(err, value, type) {
71
+ if(err) return callback(err);
72
+ if(typeof value !== "undefined") {
73
+ handleExternal(value, type, callback);
74
+ } else {
75
+ callback();
76
+ }
77
+ });
78
+ return;
79
+ } else if(typeof externals === "object" && Object.prototype.hasOwnProperty.call(externals, dependency.request)) {
80
+ return handleExternal(externals[dependency.request], callback);
81
+ }
82
+ callback();
83
+ }(this.externals, function(err, module) {
84
+ if(err) return callback(err);
85
+ if(!module) return handleExternal(false, callback);
86
+ return callback(null, module);
87
+ }));
88
+ });
89
+ }
90
+ }
91
+ module.exports = ExternalModuleFactoryPlugin;
@@ -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
-
7
- var ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
8
-
9
- class ExternalsPlugin {
10
- constructor(type, externals) {
11
- this.type = type;
12
- this.externals = externals;
13
- }
14
- apply(compiler) {
15
- compiler.plugin("compile", (params) => {
16
- params.normalModuleFactory.apply(new ExternalModuleFactoryPlugin(this.type, this.externals));
17
- });
18
- }
19
- }
20
-
21
- module.exports = ExternalsPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ var ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
8
+
9
+ class ExternalsPlugin {
10
+ constructor(type, externals) {
11
+ this.type = type;
12
+ this.externals = externals;
13
+ }
14
+ apply(compiler) {
15
+ compiler.plugin("compile", (params) => {
16
+ params.normalModuleFactory.apply(new ExternalModuleFactoryPlugin(this.type, this.externals));
17
+ });
18
+ }
19
+ }
20
+
21
+ module.exports = ExternalsPlugin;
@@ -1,101 +1,101 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class FlagDependencyExportsPlugin {
8
-
9
- apply(compiler) {
10
- compiler.plugin("compilation", (compilation) => {
11
- compilation.plugin("finish-modules", (modules) => {
12
- const dependencies = Object.create(null);
13
-
14
- let module;
15
- let moduleWithExports;
16
- let moduleProvidedExports;
17
- const queue = modules.filter((m) => !m.providedExports);
18
- for(let i = 0; i < queue.length; i++) {
19
- module = queue[i];
20
-
21
- if(module.providedExports !== true) {
22
- moduleWithExports = module.meta && module.meta.harmonyModule;
23
- moduleProvidedExports = Array.isArray(module.providedExports) ? new Set(module.providedExports) : new Set();
24
- processDependenciesBlock(module);
25
- if(!moduleWithExports) {
26
- module.providedExports = true;
27
- notifyDependencies();
28
- } else if(module.providedExports !== true) {
29
- module.providedExports = Array.from(moduleProvidedExports);
30
- }
31
- }
32
- }
33
-
34
- function processDependenciesBlock(depBlock) {
35
- depBlock.dependencies.forEach((dep) => processDependency(dep));
36
- depBlock.variables.forEach((variable) => {
37
- variable.dependencies.forEach((dep) => processDependency(dep));
38
- });
39
- depBlock.blocks.forEach(processDependenciesBlock);
40
- }
41
-
42
- function processDependency(dep) {
43
- const exportDesc = dep.getExports && dep.getExports();
44
- if(!exportDesc) return;
45
- moduleWithExports = true;
46
- const exports = exportDesc.exports;
47
- const exportDeps = exportDesc.dependencies;
48
- if(exportDeps) {
49
- exportDeps.forEach((dep) => {
50
- const depIdent = dep.identifier();
51
- // if this was not yet initialized
52
- // initialize it as an array containing the module and stop
53
- const array = dependencies[depIdent];
54
- if(!array) {
55
- dependencies[depIdent] = [module];
56
- return;
57
- }
58
-
59
- // check if this module is known
60
- // if not, add it to the dependencies for this identifier
61
- if(array.indexOf(module) < 0)
62
- array.push(module);
63
- });
64
- }
65
- let changed = false;
66
- if(module.providedExports !== true) {
67
- if(exports === true) {
68
- module.providedExports = true;
69
- changed = true;
70
- } else if(Array.isArray(exports)) {
71
- changed = addToSet(moduleProvidedExports, exports);
72
- }
73
- }
74
- if(changed) {
75
- notifyDependencies();
76
- }
77
- }
78
-
79
- function notifyDependencies() {
80
- const deps = dependencies[module.identifier()];
81
- if(deps) {
82
- deps.forEach((dep) => queue.push(dep));
83
- }
84
- }
85
- });
86
-
87
- function addToSet(a, b) {
88
- let changed = false;
89
- b.forEach((item) => {
90
- if(!a.has(item)) {
91
- a.add(item);
92
- changed = true;
93
- }
94
- });
95
- return changed;
96
- }
97
- });
98
- }
99
- }
100
-
101
- module.exports = FlagDependencyExportsPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class FlagDependencyExportsPlugin {
8
+
9
+ apply(compiler) {
10
+ compiler.plugin("compilation", (compilation) => {
11
+ compilation.plugin("finish-modules", (modules) => {
12
+ const dependencies = Object.create(null);
13
+
14
+ let module;
15
+ let moduleWithExports;
16
+ let moduleProvidedExports;
17
+ const queue = modules.filter((m) => !m.providedExports);
18
+ for(let i = 0; i < queue.length; i++) {
19
+ module = queue[i];
20
+
21
+ if(module.providedExports !== true) {
22
+ moduleWithExports = module.meta && module.meta.harmonyModule;
23
+ moduleProvidedExports = Array.isArray(module.providedExports) ? new Set(module.providedExports) : new Set();
24
+ processDependenciesBlock(module);
25
+ if(!moduleWithExports) {
26
+ module.providedExports = true;
27
+ notifyDependencies();
28
+ } else if(module.providedExports !== true) {
29
+ module.providedExports = Array.from(moduleProvidedExports);
30
+ }
31
+ }
32
+ }
33
+
34
+ function processDependenciesBlock(depBlock) {
35
+ depBlock.dependencies.forEach((dep) => processDependency(dep));
36
+ depBlock.variables.forEach((variable) => {
37
+ variable.dependencies.forEach((dep) => processDependency(dep));
38
+ });
39
+ depBlock.blocks.forEach(processDependenciesBlock);
40
+ }
41
+
42
+ function processDependency(dep) {
43
+ const exportDesc = dep.getExports && dep.getExports();
44
+ if(!exportDesc) return;
45
+ moduleWithExports = true;
46
+ const exports = exportDesc.exports;
47
+ const exportDeps = exportDesc.dependencies;
48
+ if(exportDeps) {
49
+ exportDeps.forEach((dep) => {
50
+ const depIdent = dep.identifier();
51
+ // if this was not yet initialized
52
+ // initialize it as an array containing the module and stop
53
+ const array = dependencies[depIdent];
54
+ if(!array) {
55
+ dependencies[depIdent] = [module];
56
+ return;
57
+ }
58
+
59
+ // check if this module is known
60
+ // if not, add it to the dependencies for this identifier
61
+ if(array.indexOf(module) < 0)
62
+ array.push(module);
63
+ });
64
+ }
65
+ let changed = false;
66
+ if(module.providedExports !== true) {
67
+ if(exports === true) {
68
+ module.providedExports = true;
69
+ changed = true;
70
+ } else if(Array.isArray(exports)) {
71
+ changed = addToSet(moduleProvidedExports, exports);
72
+ }
73
+ }
74
+ if(changed) {
75
+ notifyDependencies();
76
+ }
77
+ }
78
+
79
+ function notifyDependencies() {
80
+ const deps = dependencies[module.identifier()];
81
+ if(deps) {
82
+ deps.forEach((dep) => queue.push(dep));
83
+ }
84
+ }
85
+ });
86
+
87
+ function addToSet(a, b) {
88
+ let changed = false;
89
+ b.forEach((item) => {
90
+ if(!a.has(item)) {
91
+ a.add(item);
92
+ changed = true;
93
+ }
94
+ });
95
+ return changed;
96
+ }
97
+ });
98
+ }
99
+ }
100
+
101
+ module.exports = FlagDependencyExportsPlugin;
@@ -1,24 +1,24 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const FunctionModuleTemplatePlugin = require("./FunctionModuleTemplatePlugin");
8
- const RequestShortener = require("./RequestShortener");
9
-
10
- class FunctionModulePlugin {
11
- constructor(options, requestShortener) {
12
- this.options = options;
13
- this.requestShortener = requestShortener;
14
- }
15
-
16
- apply(compiler) {
17
- compiler.plugin("compilation", (compilation) => {
18
- compilation.moduleTemplate.requestShortener = this.requestShortener || new RequestShortener(compiler.context);
19
- compilation.moduleTemplate.apply(new FunctionModuleTemplatePlugin());
20
- });
21
- }
22
- }
23
-
24
- module.exports = FunctionModulePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const FunctionModuleTemplatePlugin = require("./FunctionModuleTemplatePlugin");
8
+ const RequestShortener = require("./RequestShortener");
9
+
10
+ class FunctionModulePlugin {
11
+ constructor(options, requestShortener) {
12
+ this.options = options;
13
+ this.requestShortener = requestShortener;
14
+ }
15
+
16
+ apply(compiler) {
17
+ compiler.plugin("compilation", (compilation) => {
18
+ compilation.moduleTemplate.requestShortener = this.requestShortener || new RequestShortener(compiler.context);
19
+ compilation.moduleTemplate.apply(new FunctionModuleTemplatePlugin());
20
+ });
21
+ }
22
+ }
23
+
24
+ module.exports = FunctionModulePlugin;
@@ -28,11 +28,15 @@ class FunctionModuleTemplatePlugin {
28
28
  source.add("/*!****" + req.replace(/./g, "*") + "****!*\\\n");
29
29
  source.add(" !*** " + req.replace(/\*\//g, "*_/") + " ***!\n");
30
30
  source.add(" \\****" + req.replace(/./g, "*") + "****/\n");
31
- if(Array.isArray(module.providedExports))
31
+ if(Array.isArray(module.providedExports) && module.providedExports.length === 0)
32
+ source.add("/*! no exports provided */\n");
33
+ else if(Array.isArray(module.providedExports))
32
34
  source.add("/*! exports provided: " + module.providedExports.join(", ") + " */\n");
33
35
  else if(module.providedExports)
34
- source.add("/*! no static exports found */\n");
35
- if(Array.isArray(module.usedExports))
36
+ source.add("/*! dynamic exports provided */\n");
37
+ if(Array.isArray(module.usedExports) && module.usedExports.length === 0)
38
+ source.add("/*! no exports used */\n");
39
+ else if(Array.isArray(module.usedExports))
36
40
  source.add("/*! exports used: " + module.usedExports.join(", ") + " */\n");
37
41
  else if(module.usedExports)
38
42
  source.add("/*! all exports used */\n");
@@ -1,42 +1,42 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const createHash = require("crypto").createHash;
7
-
8
- class HashedModuleIdsPlugin {
9
- constructor(options) {
10
- this.options = Object.assign({
11
- hashFunction: "md5",
12
- hashDigest: "base64",
13
- hashDigestLength: 4
14
- }, options);
15
- }
16
-
17
- apply(compiler) {
18
- const options = this.options;
19
- compiler.plugin("compilation", (compilation) => {
20
- const usedIds = new Set();
21
- compilation.plugin("before-module-ids", (modules) => {
22
- modules.forEach((module) => {
23
- if(module.id === null && module.libIdent) {
24
- const id = module.libIdent({
25
- context: this.options.context || compiler.options.context
26
- });
27
- const hash = createHash(options.hashFunction);
28
- hash.update(id);
29
- const hashId = hash.digest(options.hashDigest);
30
- let len = options.hashDigestLength;
31
- while(usedIds.has(hashId.substr(0, len)))
32
- len++;
33
- module.id = hashId.substr(0, len);
34
- usedIds.add(module.id);
35
- }
36
- });
37
- });
38
- });
39
- }
40
- }
41
-
42
- module.exports = HashedModuleIdsPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const createHash = require("crypto").createHash;
7
+
8
+ class HashedModuleIdsPlugin {
9
+ constructor(options) {
10
+ this.options = Object.assign({
11
+ hashFunction: "md5",
12
+ hashDigest: "base64",
13
+ hashDigestLength: 4
14
+ }, options);
15
+ }
16
+
17
+ apply(compiler) {
18
+ const options = this.options;
19
+ compiler.plugin("compilation", (compilation) => {
20
+ const usedIds = new Set();
21
+ compilation.plugin("before-module-ids", (modules) => {
22
+ modules.forEach((module) => {
23
+ if(module.id === null && module.libIdent) {
24
+ const id = module.libIdent({
25
+ context: this.options.context || compiler.options.context
26
+ });
27
+ const hash = createHash(options.hashFunction);
28
+ hash.update(id);
29
+ const hashId = hash.digest(options.hashDigest);
30
+ let len = options.hashDigestLength;
31
+ while(usedIds.has(hashId.substr(0, len)))
32
+ len++;
33
+ module.id = hashId.substr(0, len);
34
+ usedIds.add(module.id);
35
+ }
36
+ });
37
+ });
38
+ });
39
+ }
40
+ }
41
+
42
+ module.exports = HashedModuleIdsPlugin;
@@ -1,31 +1,31 @@
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 Chunk = require("./Chunk");
9
-
10
- module.exports = class HotUpdateChunkTemplate extends Template {
11
- constructor(outputOptions) {
12
- super(outputOptions);
13
- }
14
-
15
- render(id, modules, removedModules, hash, moduleTemplate, dependencyTemplates) {
16
- const hotUpdateChunk = new Chunk();
17
- hotUpdateChunk.id = id;
18
- hotUpdateChunk.setModules(modules);
19
- hotUpdateChunk.removedModules = removedModules;
20
- const modulesSource = this.renderChunkModules(hotUpdateChunk, moduleTemplate, dependencyTemplates);
21
- const core = this.applyPluginsWaterfall("modules", modulesSource, modules, removedModules, moduleTemplate, dependencyTemplates);
22
- const source = this.applyPluginsWaterfall("render", core, modules, removedModules, hash, id, moduleTemplate, dependencyTemplates);
23
- return source;
24
- }
25
-
26
- updateHash(hash) {
27
- hash.update("HotUpdateChunkTemplate");
28
- hash.update("1");
29
- this.applyPlugins("hash", hash);
30
- }
31
- };
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 Chunk = require("./Chunk");
9
+
10
+ module.exports = class HotUpdateChunkTemplate extends Template {
11
+ constructor(outputOptions) {
12
+ super(outputOptions);
13
+ }
14
+
15
+ render(id, modules, removedModules, hash, moduleTemplate, dependencyTemplates) {
16
+ const hotUpdateChunk = new Chunk();
17
+ hotUpdateChunk.id = id;
18
+ hotUpdateChunk.setModules(modules);
19
+ hotUpdateChunk.removedModules = removedModules;
20
+ const modulesSource = this.renderChunkModules(hotUpdateChunk, moduleTemplate, dependencyTemplates);
21
+ const core = this.applyPluginsWaterfall("modules", modulesSource, modules, removedModules, moduleTemplate, dependencyTemplates);
22
+ const source = this.applyPluginsWaterfall("render", core, modules, removedModules, hash, id, moduleTemplate, dependencyTemplates);
23
+ return source;
24
+ }
25
+
26
+ updateHash(hash) {
27
+ hash.update("HotUpdateChunkTemplate");
28
+ hash.update("1");
29
+ this.applyPlugins("hash", hash);
30
+ }
31
+ };