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
package/lib/Parser.js CHANGED
@@ -321,45 +321,76 @@ class Parser extends Tapable {
321
321
  }
322
322
  return new BasicEvaluatedExpression().setString(result).setRange(expr.range);
323
323
  });
324
+ });
324
325
 
325
- /**
326
- * @param {string} kind "cooked" | "raw"
327
- * @param {any[]} quasis quasis
328
- * @param {any[]} expressions expressions
329
- * @return {BasicEvaluatedExpression[]} Simplified template
330
- */
331
- function getSimplifiedTemplateResult(kind, quasis, expressions) {
332
- const parts = [];
333
-
334
- for(let i = 0; i < quasis.length; i++) {
335
- parts.push(new BasicEvaluatedExpression().setString(quasis[i].value[kind]).setRange(quasis[i].range));
336
-
337
- if(i > 0) {
338
- const prevExpr = parts[parts.length - 2],
339
- lastExpr = parts[parts.length - 1];
340
- const expr = this.evaluateExpression(expressions[i - 1]);
341
- if(!(expr.isString() || expr.isNumber())) continue;
342
-
343
- prevExpr.setString(prevExpr.string + (expr.isString() ? expr.string : expr.number) + lastExpr.string);
344
- prevExpr.setRange([prevExpr.range[0], lastExpr.range[1]]);
345
- parts.pop();
346
- }
326
+ /**
327
+ * @param {string} kind "cooked" | "raw"
328
+ * @param {any[]} quasis quasis
329
+ * @param {any[]} expressions expressions
330
+ * @return {BasicEvaluatedExpression[]} Simplified template
331
+ */
332
+ function getSimplifiedTemplateResult(kind, quasis, expressions) {
333
+ const parts = [];
334
+
335
+ for(let i = 0; i < quasis.length; i++) {
336
+ parts.push(new BasicEvaluatedExpression().setString(quasis[i].value[kind]).setRange(quasis[i].range));
337
+
338
+ if(i > 0) {
339
+ const prevExpr = parts[parts.length - 2],
340
+ lastExpr = parts[parts.length - 1];
341
+ const expr = this.evaluateExpression(expressions[i - 1]);
342
+ if(!(expr.isString() || expr.isNumber())) continue;
343
+
344
+ prevExpr.setString(prevExpr.string + (expr.isString() ? expr.string : expr.number) + lastExpr.string);
345
+ prevExpr.setRange([prevExpr.range[0], lastExpr.range[1]]);
346
+ parts.pop();
347
347
  }
348
- return parts;
349
348
  }
349
+ return parts;
350
+ }
350
351
 
351
- this.plugin("evaluate TemplateLiteral", function(node) {
352
- const parts = getSimplifiedTemplateResult.call(this, "cooked", node.quasis, node.expressions);
353
- if(parts.length === 1) {
354
- return parts[0].setRange(node.range);
352
+ this.plugin("evaluate TemplateLiteral", function(node) {
353
+ const parts = getSimplifiedTemplateResult.call(this, "cooked", node.quasis, node.expressions);
354
+ if(parts.length === 1) {
355
+ return parts[0].setRange(node.range);
356
+ }
357
+ return new BasicEvaluatedExpression().setTemplateString(parts).setRange(node.range);
358
+ });
359
+ this.plugin("evaluate TaggedTemplateExpression", function(node) {
360
+ if(this.evaluateExpression(node.tag).identifier !== "String.raw") return;
361
+ const parts = getSimplifiedTemplateResult.call(this, "raw", node.quasi.quasis, node.quasi.expressions);
362
+ return new BasicEvaluatedExpression().setTemplateString(parts).setRange(node.range);
363
+ });
364
+
365
+ this.plugin("evaluate CallExpression .concat", function(expr, param) {
366
+ if(!param.isString() && !param.isWrapped()) return;
367
+
368
+ let stringSuffix = null;
369
+ let hasUnknownParams = false;
370
+ for(let i = expr.arguments.length - 1; i >= 0; i--) {
371
+ const argExpr = this.evaluateExpression(expr.arguments[i]);
372
+ if(!argExpr.isString() && !argExpr.isNumber()) {
373
+ hasUnknownParams = true;
374
+ break;
355
375
  }
356
- return new BasicEvaluatedExpression().setTemplateString(parts).setRange(node.range);
357
- });
358
- this.plugin("evaluate TaggedTemplateExpression", function(node) {
359
- if(this.evaluateExpression(node.tag).identifier !== "String.raw") return;
360
- const parts = getSimplifiedTemplateResult.call(this, "raw", node.quasi.quasis, node.quasi.expressions);
361
- return new BasicEvaluatedExpression().setTemplateString(parts).setRange(node.range);
362
- });
376
+
377
+ const value = argExpr.isString() ? argExpr.string : "" + argExpr.number;
378
+
379
+ const newString = value + (stringSuffix ? stringSuffix.string : "");
380
+ const newRange = [argExpr.range[0], (stringSuffix || argExpr).range[1]];
381
+ stringSuffix = new BasicEvaluatedExpression().setString(newString).setRange(newRange);
382
+ }
383
+
384
+ if(hasUnknownParams) {
385
+ const prefix = param.isString() ? param : param.prefix;
386
+ return new BasicEvaluatedExpression().setWrapped(prefix, stringSuffix).setRange(expr.range);
387
+ } else if(param.isWrapped()) {
388
+ const postfix = stringSuffix || param.postfix;
389
+ return new BasicEvaluatedExpression().setWrapped(param.prefix, postfix).setRange(expr.range);
390
+ } else {
391
+ const newString = param.string + (stringSuffix ? stringSuffix.string : "");
392
+ return new BasicEvaluatedExpression().setString(newString).setRange(expr.range);
393
+ }
363
394
  });
364
395
  this.plugin("evaluate CallExpression .split", function(expr, param) {
365
396
  if(!param.isString()) return;
@@ -1,85 +1,85 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const path = require("path");
7
-
8
- const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
9
- const ConstDependency = require("./dependencies/ConstDependency");
10
- const UnsupportedFeatureWarning = require("./UnsupportedFeatureWarning");
11
-
12
- const ParserHelpers = exports;
13
-
14
- ParserHelpers.addParsedVariableToModule = function(parser, name, expression) {
15
- if(!parser.state.current.addVariable) return false;
16
- var deps = [];
17
- parser.parse(expression, {
18
- current: {
19
- addDependency: function(dep) {
20
- dep.userRequest = name;
21
- deps.push(dep);
22
- }
23
- },
24
- module: parser.state.module
25
- });
26
- parser.state.current.addVariable(name, expression, deps);
27
- return true;
28
- };
29
-
30
- ParserHelpers.requireFileAsExpression = function(context, pathToModule) {
31
- var moduleJsPath = path.relative(context, pathToModule);
32
- if(!/^[A-Z]:/i.test(moduleJsPath)) {
33
- moduleJsPath = "./" + moduleJsPath.replace(/\\/g, "/");
34
- }
35
- return "require(" + JSON.stringify(moduleJsPath) + ")";
36
- };
37
-
38
- ParserHelpers.toConstantDependency = function(value) {
39
- return function constDependency(expr) {
40
- var dep = new ConstDependency(value, expr.range);
41
- dep.loc = expr.loc;
42
- this.state.current.addDependency(dep);
43
- return true;
44
- };
45
- };
46
-
47
- ParserHelpers.evaluateToString = function(value) {
48
- return function stringExpression(expr) {
49
- return new BasicEvaluatedExpression().setString(value).setRange(expr.range);
50
- };
51
- };
52
-
53
- ParserHelpers.evaluateToBoolean = function(value) {
54
- return function booleanExpression(expr) {
55
- return new BasicEvaluatedExpression().setBoolean(value).setRange(expr.range);
56
- };
57
- };
58
-
59
- ParserHelpers.evaluateToIdentifier = function(identifier, truthy) {
60
- return function identifierExpression(expr) {
61
- let evex = new BasicEvaluatedExpression().setIdentifier(identifier).setRange(expr.range);
62
- if(truthy === true) evex = evex.setTruthy();
63
- else if(truthy === false) evex = evex.setFalsy();
64
- return evex;
65
- };
66
- };
67
-
68
- ParserHelpers.expressionIsUnsupported = function(message) {
69
- return function unsupportedExpression(expr) {
70
- var dep = new ConstDependency("(void 0)", expr.range);
71
- dep.loc = expr.loc;
72
- this.state.current.addDependency(dep);
73
- if(!this.state.module) return;
74
- this.state.module.warnings.push(new UnsupportedFeatureWarning(this.state.module, message));
75
- return true;
76
- };
77
- };
78
-
79
- ParserHelpers.skipTraversal = function skipTraversal() {
80
- return true;
81
- };
82
-
83
- ParserHelpers.approve = function approve() {
84
- return true;
85
- };
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const path = require("path");
7
+
8
+ const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
9
+ const ConstDependency = require("./dependencies/ConstDependency");
10
+ const UnsupportedFeatureWarning = require("./UnsupportedFeatureWarning");
11
+
12
+ const ParserHelpers = exports;
13
+
14
+ ParserHelpers.addParsedVariableToModule = function(parser, name, expression) {
15
+ if(!parser.state.current.addVariable) return false;
16
+ var deps = [];
17
+ parser.parse(expression, {
18
+ current: {
19
+ addDependency: function(dep) {
20
+ dep.userRequest = name;
21
+ deps.push(dep);
22
+ }
23
+ },
24
+ module: parser.state.module
25
+ });
26
+ parser.state.current.addVariable(name, expression, deps);
27
+ return true;
28
+ };
29
+
30
+ ParserHelpers.requireFileAsExpression = function(context, pathToModule) {
31
+ var moduleJsPath = path.relative(context, pathToModule);
32
+ if(!/^[A-Z]:/i.test(moduleJsPath)) {
33
+ moduleJsPath = "./" + moduleJsPath.replace(/\\/g, "/");
34
+ }
35
+ return "require(" + JSON.stringify(moduleJsPath) + ")";
36
+ };
37
+
38
+ ParserHelpers.toConstantDependency = function(value) {
39
+ return function constDependency(expr) {
40
+ var dep = new ConstDependency(value, expr.range);
41
+ dep.loc = expr.loc;
42
+ this.state.current.addDependency(dep);
43
+ return true;
44
+ };
45
+ };
46
+
47
+ ParserHelpers.evaluateToString = function(value) {
48
+ return function stringExpression(expr) {
49
+ return new BasicEvaluatedExpression().setString(value).setRange(expr.range);
50
+ };
51
+ };
52
+
53
+ ParserHelpers.evaluateToBoolean = function(value) {
54
+ return function booleanExpression(expr) {
55
+ return new BasicEvaluatedExpression().setBoolean(value).setRange(expr.range);
56
+ };
57
+ };
58
+
59
+ ParserHelpers.evaluateToIdentifier = function(identifier, truthy) {
60
+ return function identifierExpression(expr) {
61
+ let evex = new BasicEvaluatedExpression().setIdentifier(identifier).setRange(expr.range);
62
+ if(truthy === true) evex = evex.setTruthy();
63
+ else if(truthy === false) evex = evex.setFalsy();
64
+ return evex;
65
+ };
66
+ };
67
+
68
+ ParserHelpers.expressionIsUnsupported = function(message) {
69
+ return function unsupportedExpression(expr) {
70
+ var dep = new ConstDependency("(void 0)", expr.range);
71
+ dep.loc = expr.loc;
72
+ this.state.current.addDependency(dep);
73
+ if(!this.state.module) return;
74
+ this.state.module.warnings.push(new UnsupportedFeatureWarning(this.state.module, message));
75
+ return true;
76
+ };
77
+ };
78
+
79
+ ParserHelpers.skipTraversal = function skipTraversal() {
80
+ return true;
81
+ };
82
+
83
+ ParserHelpers.approve = function approve() {
84
+ return true;
85
+ };
@@ -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
- const PrefetchDependency = require("./dependencies/PrefetchDependency");
7
-
8
- class PrefetchPlugin {
9
-
10
- constructor(context, request) {
11
- if(!request) {
12
- this.request = context;
13
- } else {
14
- this.context = context;
15
- this.request = request;
16
- }
17
- }
18
-
19
- apply(compiler) {
20
- compiler.plugin("compilation", (compilation, params) => {
21
- const normalModuleFactory = params.normalModuleFactory;
22
-
23
- compilation.dependencyFactories.set(PrefetchDependency, normalModuleFactory);
24
- });
25
- compiler.plugin("make", (compilation, callback) => {
26
- compilation.prefetch(this.context || compiler.context, new PrefetchDependency(this.request), callback);
27
- });
28
- }
29
-
30
- }
31
- module.exports = PrefetchPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const PrefetchDependency = require("./dependencies/PrefetchDependency");
7
+
8
+ class PrefetchPlugin {
9
+
10
+ constructor(context, request) {
11
+ if(!request) {
12
+ this.request = context;
13
+ } else {
14
+ this.context = context;
15
+ this.request = request;
16
+ }
17
+ }
18
+
19
+ apply(compiler) {
20
+ compiler.plugin("compilation", (compilation, params) => {
21
+ const normalModuleFactory = params.normalModuleFactory;
22
+
23
+ compilation.dependencyFactories.set(PrefetchDependency, normalModuleFactory);
24
+ });
25
+ compiler.plugin("make", (compilation, callback) => {
26
+ compilation.prefetch(this.context || compiler.context, new PrefetchDependency(this.request), callback);
27
+ });
28
+ }
29
+
30
+ }
31
+ module.exports = PrefetchPlugin;