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,102 +1,102 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Sean Larkin @thelarkinn
4
- */
5
- "use strict";
6
- const EntrypointsOverSizeLimitWarning = require("./EntrypointsOverSizeLimitWarning");
7
- const AssetsOverSizeLimitWarning = require("./AssetsOverSizeLimitWarning");
8
- const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
9
-
10
- module.exports = class SizeLimitsPlugin {
11
- constructor(options) {
12
- this.hints = options.hints;
13
- this.maxAssetSize = options.maxAssetSize;
14
- this.maxEntrypointSize = options.maxEntrypointSize;
15
- this.assetFilter = options.assetFilter;
16
- }
17
- apply(compiler) {
18
- const entrypointSizeLimit = this.maxEntrypointSize;
19
- const assetSizeLimit = this.maxAssetSize;
20
- const hints = this.hints;
21
- const assetFilter = this.assetFilter || (asset => !(/\.map$/.test(asset)));
22
-
23
- compiler.plugin("after-emit", (compilation, callback) => {
24
- const warnings = [];
25
-
26
- const getEntrypointSize = entrypoint =>
27
- entrypoint.getFiles()
28
- .filter(assetFilter)
29
- .map(file => compilation.assets[file])
30
- .filter(Boolean)
31
- .map(asset => asset.size())
32
- .reduce((currentSize, nextSize) => currentSize + nextSize, 0);
33
-
34
- const assetsOverSizeLimit = [];
35
- Object.keys(compilation.assets)
36
- .filter(assetFilter)
37
- .forEach(assetName => {
38
- const asset = compilation.assets[assetName];
39
- const size = asset.size();
40
-
41
- if(size > assetSizeLimit) {
42
- assetsOverSizeLimit.push({
43
- name: assetName,
44
- size: size,
45
- });
46
- asset.isOverSizeLimit = true;
47
- }
48
- });
49
-
50
- const entrypointsOverLimit = [];
51
- Object.keys(compilation.entrypoints)
52
- .forEach(key => {
53
- const entry = compilation.entrypoints[key];
54
- const size = getEntrypointSize(entry, compilation);
55
-
56
- if(size > entrypointSizeLimit) {
57
- entrypointsOverLimit.push({
58
- name: key,
59
- size: size,
60
- files: entry.getFiles().filter(assetFilter)
61
- });
62
- entry.isOverSizeLimit = true;
63
- }
64
- });
65
-
66
- if(hints) {
67
- // 1. Individual Chunk: Size < 250kb
68
- // 2. Collective Initial Chunks [entrypoint] (Each Set?): Size < 250kb
69
- // 3. No Async Chunks
70
- // if !1, then 2, if !2 return
71
- if(assetsOverSizeLimit.length > 0) {
72
- warnings.push(
73
- new AssetsOverSizeLimitWarning(
74
- assetsOverSizeLimit,
75
- assetSizeLimit));
76
- }
77
- if(entrypointsOverLimit.length > 0) {
78
- warnings.push(
79
- new EntrypointsOverSizeLimitWarning(
80
- entrypointsOverLimit,
81
- entrypointSizeLimit));
82
- }
83
-
84
- if(warnings.length > 0) {
85
- const hasAsyncChunks = compilation.chunks.filter(chunk => !chunk.isInitial()).length > 0;
86
-
87
- if(!hasAsyncChunks) {
88
- warnings.push(new NoAsyncChunksWarning());
89
- }
90
-
91
- if(hints === "error") {
92
- Array.prototype.push.apply(compilation.errors, warnings);
93
- } else {
94
- Array.prototype.push.apply(compilation.warnings, warnings);
95
- }
96
- }
97
- }
98
-
99
- callback();
100
- });
101
- }
102
- };
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Sean Larkin @thelarkinn
4
+ */
5
+ "use strict";
6
+ const EntrypointsOverSizeLimitWarning = require("./EntrypointsOverSizeLimitWarning");
7
+ const AssetsOverSizeLimitWarning = require("./AssetsOverSizeLimitWarning");
8
+ const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
9
+
10
+ module.exports = class SizeLimitsPlugin {
11
+ constructor(options) {
12
+ this.hints = options.hints;
13
+ this.maxAssetSize = options.maxAssetSize;
14
+ this.maxEntrypointSize = options.maxEntrypointSize;
15
+ this.assetFilter = options.assetFilter;
16
+ }
17
+ apply(compiler) {
18
+ const entrypointSizeLimit = this.maxEntrypointSize;
19
+ const assetSizeLimit = this.maxAssetSize;
20
+ const hints = this.hints;
21
+ const assetFilter = this.assetFilter || (asset => !(/\.map$/.test(asset)));
22
+
23
+ compiler.plugin("after-emit", (compilation, callback) => {
24
+ const warnings = [];
25
+
26
+ const getEntrypointSize = entrypoint =>
27
+ entrypoint.getFiles()
28
+ .filter(assetFilter)
29
+ .map(file => compilation.assets[file])
30
+ .filter(Boolean)
31
+ .map(asset => asset.size())
32
+ .reduce((currentSize, nextSize) => currentSize + nextSize, 0);
33
+
34
+ const assetsOverSizeLimit = [];
35
+ Object.keys(compilation.assets)
36
+ .filter(assetFilter)
37
+ .forEach(assetName => {
38
+ const asset = compilation.assets[assetName];
39
+ const size = asset.size();
40
+
41
+ if(size > assetSizeLimit) {
42
+ assetsOverSizeLimit.push({
43
+ name: assetName,
44
+ size: size,
45
+ });
46
+ asset.isOverSizeLimit = true;
47
+ }
48
+ });
49
+
50
+ const entrypointsOverLimit = [];
51
+ Object.keys(compilation.entrypoints)
52
+ .forEach(key => {
53
+ const entry = compilation.entrypoints[key];
54
+ const size = getEntrypointSize(entry, compilation);
55
+
56
+ if(size > entrypointSizeLimit) {
57
+ entrypointsOverLimit.push({
58
+ name: key,
59
+ size: size,
60
+ files: entry.getFiles().filter(assetFilter)
61
+ });
62
+ entry.isOverSizeLimit = true;
63
+ }
64
+ });
65
+
66
+ if(hints) {
67
+ // 1. Individual Chunk: Size < 250kb
68
+ // 2. Collective Initial Chunks [entrypoint] (Each Set?): Size < 250kb
69
+ // 3. No Async Chunks
70
+ // if !1, then 2, if !2 return
71
+ if(assetsOverSizeLimit.length > 0) {
72
+ warnings.push(
73
+ new AssetsOverSizeLimitWarning(
74
+ assetsOverSizeLimit,
75
+ assetSizeLimit));
76
+ }
77
+ if(entrypointsOverLimit.length > 0) {
78
+ warnings.push(
79
+ new EntrypointsOverSizeLimitWarning(
80
+ entrypointsOverLimit,
81
+ entrypointSizeLimit));
82
+ }
83
+
84
+ if(warnings.length > 0) {
85
+ const hasAsyncChunks = compilation.chunks.filter(chunk => !chunk.isInitial()).length > 0;
86
+
87
+ if(!hasAsyncChunks) {
88
+ warnings.push(new NoAsyncChunksWarning());
89
+ }
90
+
91
+ if(hints === "error") {
92
+ Array.prototype.push.apply(compilation.errors, warnings);
93
+ } else {
94
+ Array.prototype.push.apply(compilation.warnings, warnings);
95
+ }
96
+ }
97
+ }
98
+
99
+ callback();
100
+ });
101
+ }
102
+ };
@@ -1,29 +1,29 @@
1
- "use strict";
2
-
3
- module.exports = function prepareOptions(options, argv) {
4
- argv = argv || {};
5
-
6
- options = handleExport(options);
7
-
8
- if(Array.isArray(options)) {
9
- options = options.map(_options => handleFunction(_options, argv));
10
- } else {
11
- options = handleFunction(options, argv);
12
- }
13
- return options;
14
- };
15
-
16
- function handleExport(options) {
17
- const isES6DefaultExported = (
18
- typeof options === "object" && options !== null && typeof options.default !== "undefined"
19
- );
20
- options = isES6DefaultExported ? options.default : options;
21
- return options;
22
- }
23
-
24
- function handleFunction(options, argv) {
25
- if(typeof options === "function") {
26
- options = options(argv.env, argv);
27
- }
28
- return options;
29
- }
1
+ "use strict";
2
+
3
+ module.exports = function prepareOptions(options, argv) {
4
+ argv = argv || {};
5
+
6
+ options = handleExport(options);
7
+
8
+ if(Array.isArray(options)) {
9
+ options = options.map(_options => handleFunction(_options, argv));
10
+ } else {
11
+ options = handleFunction(options, argv);
12
+ }
13
+ return options;
14
+ };
15
+
16
+ function handleExport(options) {
17
+ const isES6DefaultExported = (
18
+ typeof options === "object" && options !== null && typeof options.default !== "undefined"
19
+ );
20
+ options = isES6DefaultExported ? options.default : options;
21
+ return options;
22
+ }
23
+
24
+ function handleFunction(options, argv) {
25
+ if(typeof options === "function") {
26
+ options = options(argv.env, argv);
27
+ }
28
+ return options;
29
+ }
@@ -1,15 +1,15 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- module.exports = function removeAndDo(collection, thing, action) {
8
- const idx = this[collection].indexOf(thing);
9
- const hasThingInCollection = idx >= 0;
10
- if(hasThingInCollection) {
11
- this[collection].splice(idx, 1);
12
- thing[action](this);
13
- }
14
- return hasThingInCollection;
15
- };
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ module.exports = function removeAndDo(collection, thing, action) {
8
+ const idx = this[collection].indexOf(thing);
9
+ const hasThingInCollection = idx >= 0;
10
+ if(hasThingInCollection) {
11
+ this[collection].splice(idx, 1);
12
+ thing[action](this);
13
+ }
14
+ return hasThingInCollection;
15
+ };
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ module.exports = class Queue {
4
+ constructor(items) {
5
+ this.first = null;
6
+ this.last = null;
7
+ this.length = 0;
8
+ if(items) {
9
+ for(const item of items) {
10
+ this.enqueue(item);
11
+ }
12
+ }
13
+ }
14
+
15
+ enqueue(item) {
16
+ const first = this.first;
17
+ const node = {
18
+ item,
19
+ next: null
20
+ };
21
+ if(first === null) {
22
+ this.last = node;
23
+ } else {
24
+ first.next = node;
25
+ }
26
+ this.first = node;
27
+ this.length++;
28
+ }
29
+
30
+ dequeue() {
31
+ const last = this.last;
32
+ if(last === null)
33
+ return undefined;
34
+ const next = last.next;
35
+ if(next === null) {
36
+ this.first = null;
37
+ }
38
+ this.last = next;
39
+ this.length--;
40
+ return last.item;
41
+ }
42
+ };
@@ -1,32 +1,32 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class Semaphore {
8
- constructor(available) {
9
- this.available = available;
10
- this.waiters = [];
11
- }
12
-
13
- acquire(callback) {
14
- if(this.available > 0) {
15
- this.available--;
16
- callback();
17
- } else {
18
- this.waiters.push(callback);
19
- }
20
- }
21
-
22
- release() {
23
- if(this.waiters.length > 0) {
24
- const callback = this.waiters.pop();
25
- process.nextTick(callback);
26
- } else {
27
- this.available++;
28
- }
29
- }
30
- }
31
-
32
- module.exports = Semaphore;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class Semaphore {
8
+ constructor(available) {
9
+ this.available = available;
10
+ this.waiters = [];
11
+ }
12
+
13
+ acquire(callback) {
14
+ if(this.available > 0) {
15
+ this.available--;
16
+ callback();
17
+ } else {
18
+ this.waiters.push(callback);
19
+ }
20
+ }
21
+
22
+ release() {
23
+ if(this.waiters.length > 0) {
24
+ const callback = this.waiters.pop();
25
+ process.nextTick(callback);
26
+ } else {
27
+ this.available++;
28
+ }
29
+ }
30
+ }
31
+
32
+ module.exports = Semaphore;
@@ -1,38 +1,38 @@
1
- "use strict";
2
- const path = require("path");
3
-
4
- const looksLikeAbsolutePath = (maybeAbsolutePath) => {
5
- return /^(?:[a-z]:\\|\/)/i.test(maybeAbsolutePath);
6
- };
7
-
8
- const normalizePathSeparator = (p) => p.replace(/\\/g, "/");
9
-
10
- const _makePathsRelative = (context, identifier) => {
11
- return identifier
12
- .split(/([|! ])/)
13
- .map(str => looksLikeAbsolutePath(str) ?
14
- normalizePathSeparator(path.relative(context, str)) : str)
15
- .join("");
16
- };
17
-
18
- exports.makePathsRelative = (context, identifier, cache) => {
19
- if(!cache) return _makePathsRelative(context, identifier);
20
-
21
- const relativePaths = cache.relativePaths || (cache.relativePaths = new Map());
22
-
23
- let cachedResult;
24
- let contextCache = relativePaths.get(context);
25
- if(typeof contextCache === "undefined") {
26
- relativePaths.set(context, contextCache = new Map());
27
- } else {
28
- cachedResult = contextCache.get(identifier);
29
- }
30
-
31
- if(typeof cachedResult !== "undefined") {
32
- return cachedResult;
33
- } else {
34
- const relativePath = _makePathsRelative(context, identifier);
35
- contextCache.set(identifier, relativePath);
36
- return relativePath;
37
- }
38
- };
1
+ "use strict";
2
+ const path = require("path");
3
+
4
+ const looksLikeAbsolutePath = (maybeAbsolutePath) => {
5
+ return /^(?:[a-z]:\\|\/)/i.test(maybeAbsolutePath);
6
+ };
7
+
8
+ const normalizePathSeparator = (p) => p.replace(/\\/g, "/");
9
+
10
+ const _makePathsRelative = (context, identifier) => {
11
+ return identifier
12
+ .split(/([|! ])/)
13
+ .map(str => looksLikeAbsolutePath(str) ?
14
+ normalizePathSeparator(path.relative(context, str)) : str)
15
+ .join("");
16
+ };
17
+
18
+ exports.makePathsRelative = (context, identifier, cache) => {
19
+ if(!cache) return _makePathsRelative(context, identifier);
20
+
21
+ const relativePaths = cache.relativePaths || (cache.relativePaths = new Map());
22
+
23
+ let cachedResult;
24
+ let contextCache = relativePaths.get(context);
25
+ if(typeof contextCache === "undefined") {
26
+ relativePaths.set(context, contextCache = new Map());
27
+ } else {
28
+ cachedResult = contextCache.get(identifier);
29
+ }
30
+
31
+ if(typeof cachedResult !== "undefined") {
32
+ return cachedResult;
33
+ } else {
34
+ const relativePath = _makePathsRelative(context, identifier);
35
+ contextCache.set(identifier, relativePath);
36
+ return relativePath;
37
+ }
38
+ };
@@ -1,66 +1,66 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Gajus Kuizinas @gajus
4
- */
5
- "use strict";
6
-
7
- const Ajv = require("ajv");
8
- const ajv = new Ajv({
9
- errorDataPath: "configuration",
10
- allErrors: true,
11
- verbose: true
12
- });
13
- require("ajv-keywords")(ajv, ["instanceof"]);
14
- require("../schemas/ajv.absolutePath")(ajv);
15
-
16
- function validateSchema(schema, options) {
17
- if(Array.isArray(options)) {
18
- const errors = options.map((options) => validateObject(schema, options));
19
- errors.forEach((list, idx) => {
20
- list.forEach(function applyPrefix(err) {
21
- err.dataPath = `[${idx}]${err.dataPath}`;
22
- if(err.children) {
23
- err.children.forEach(applyPrefix);
24
- }
25
- });
26
- });
27
- return errors.reduce((arr, items) => {
28
- return arr.concat(items);
29
- }, []);
30
- } else {
31
- return validateObject(schema, options);
32
- }
33
- }
34
-
35
- function validateObject(schema, options) {
36
- const validate = ajv.compile(schema);
37
- const valid = validate(options);
38
- return valid ? [] : filterErrors(validate.errors);
39
- }
40
-
41
- function filterErrors(errors) {
42
- let newErrors = [];
43
- errors.forEach((err) => {
44
- const dataPath = err.dataPath;
45
- let children = [];
46
- newErrors = newErrors.filter((oldError) => {
47
- if(oldError.dataPath.includes(dataPath)) {
48
- if(oldError.children) {
49
- children = children.concat(oldError.children.slice(0));
50
- }
51
- oldError.children = undefined;
52
- children.push(oldError);
53
- return false;
54
- }
55
- return true;
56
- });
57
- if(children.length) {
58
- err.children = children;
59
- }
60
- newErrors.push(err);
61
- });
62
-
63
- return newErrors;
64
- }
65
-
66
- module.exports = validateSchema;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Gajus Kuizinas @gajus
4
+ */
5
+ "use strict";
6
+
7
+ const Ajv = require("ajv");
8
+ const ajv = new Ajv({
9
+ errorDataPath: "configuration",
10
+ allErrors: true,
11
+ verbose: true
12
+ });
13
+ require("ajv-keywords")(ajv, ["instanceof"]);
14
+ require("../schemas/ajv.absolutePath")(ajv);
15
+
16
+ function validateSchema(schema, options) {
17
+ if(Array.isArray(options)) {
18
+ const errors = options.map((options) => validateObject(schema, options));
19
+ errors.forEach((list, idx) => {
20
+ list.forEach(function applyPrefix(err) {
21
+ err.dataPath = `[${idx}]${err.dataPath}`;
22
+ if(err.children) {
23
+ err.children.forEach(applyPrefix);
24
+ }
25
+ });
26
+ });
27
+ return errors.reduce((arr, items) => {
28
+ return arr.concat(items);
29
+ }, []);
30
+ } else {
31
+ return validateObject(schema, options);
32
+ }
33
+ }
34
+
35
+ function validateObject(schema, options) {
36
+ const validate = ajv.compile(schema);
37
+ const valid = validate(options);
38
+ return valid ? [] : filterErrors(validate.errors);
39
+ }
40
+
41
+ function filterErrors(errors) {
42
+ let newErrors = [];
43
+ errors.forEach((err) => {
44
+ const dataPath = err.dataPath;
45
+ let children = [];
46
+ newErrors = newErrors.filter((oldError) => {
47
+ if(oldError.dataPath.includes(dataPath)) {
48
+ if(oldError.children) {
49
+ children = children.concat(oldError.children.slice(0));
50
+ }
51
+ oldError.children = undefined;
52
+ children.push(oldError);
53
+ return false;
54
+ }
55
+ return true;
56
+ });
57
+ if(children.length) {
58
+ err.children = children;
59
+ }
60
+ newErrors.push(err);
61
+ });
62
+
63
+ return newErrors;
64
+ }
65
+
66
+ module.exports = validateSchema;
@@ -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
-
7
- class WebEnvironmentPlugin {
8
- constructor(inputFileSystem, outputFileSystem) {
9
- this.inputFileSystem = inputFileSystem;
10
- this.outputFileSystem = outputFileSystem;
11
- }
12
-
13
- apply(compiler) {
14
- compiler.outputFileSystem = this.outputFileSystem;
15
- }
16
- }
17
-
18
- module.exports = WebEnvironmentPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class WebEnvironmentPlugin {
8
+ constructor(inputFileSystem, outputFileSystem) {
9
+ this.inputFileSystem = inputFileSystem;
10
+ this.outputFileSystem = outputFileSystem;
11
+ }
12
+
13
+ apply(compiler) {
14
+ compiler.outputFileSystem = this.outputFileSystem;
15
+ }
16
+ }
17
+
18
+ module.exports = WebEnvironmentPlugin;
package/lib/webpack.js CHANGED
@@ -73,6 +73,7 @@ exportPlugins(exports, {
73
73
  "DefinePlugin": () => require("./DefinePlugin"),
74
74
  "NormalModuleReplacementPlugin": () => require("./NormalModuleReplacementPlugin"),
75
75
  "ContextReplacementPlugin": () => require("./ContextReplacementPlugin"),
76
+ "ContextExclusionPlugin": () => require("./ContextExclusionPlugin"),
76
77
  "IgnorePlugin": () => require("./IgnorePlugin"),
77
78
  "WatchIgnorePlugin": () => require("./WatchIgnorePlugin"),
78
79
  "BannerPlugin": () => require("./BannerPlugin"),