webpack 3.8.1 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +721 -716
- package/bin/webpack.js +12 -8
- package/buildin/.eslintrc +7 -7
- package/buildin/amd-define.js +3 -3
- package/buildin/amd-options.js +2 -2
- package/buildin/global.js +21 -21
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/buildin/system.js +7 -7
- package/hot/.eslintrc +9 -9
- package/hot/dev-server.js +53 -53
- package/hot/emitter.js +2 -2
- package/hot/log-apply-result.js +38 -38
- package/hot/log.js +44 -44
- package/hot/only-dev-server.js +71 -71
- package/hot/poll.js +34 -34
- package/hot/signal.js +52 -51
- package/lib/APIPlugin.js +45 -45
- package/lib/AsyncDependenciesBlock.js +43 -43
- package/lib/AutomaticPrefetchPlugin.js +36 -36
- package/lib/BannerPlugin.js +4 -2
- package/lib/BasicEvaluatedExpression.js +203 -203
- package/lib/CaseSensitiveModulesWarning.js +49 -49
- package/lib/Chunk.js +2 -2
- package/lib/ChunkRenderError.js +24 -24
- package/lib/ChunkTemplate.js +36 -36
- package/lib/CompatibilityPlugin.js +57 -57
- package/lib/Compilation.js +81 -92
- package/lib/Compiler.js +519 -523
- package/lib/ConstPlugin.js +60 -60
- package/lib/ContextModule.js +431 -431
- package/lib/ContextReplacementPlugin.js +111 -111
- package/lib/DefinePlugin.js +123 -123
- package/lib/DelegatedModule.js +98 -98
- package/lib/DelegatedModuleFactoryPlugin.js +59 -59
- package/lib/DelegatedPlugin.js +30 -30
- package/lib/DependenciesBlockVariable.js +51 -51
- package/lib/DllEntryPlugin.js +37 -37
- package/lib/DllModule.js +58 -58
- package/lib/DllModuleFactory.js +20 -20
- package/lib/DllPlugin.js +38 -38
- package/lib/DllReferencePlugin.js +62 -62
- package/lib/DynamicEntryPlugin.js +59 -59
- package/lib/EntryModuleNotFoundError.js +22 -22
- package/lib/EntryOptionPlugin.js +31 -31
- package/lib/EnvironmentPlugin.js +60 -50
- package/lib/ErrorHelpers.js +31 -31
- package/lib/EvalDevToolModulePlugin.js +22 -22
- package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
- package/lib/EvalSourceMapDevToolPlugin.js +32 -32
- package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
- package/lib/ExtendedAPIPlugin.js +47 -47
- package/lib/ExternalModuleFactoryPlugin.js +91 -91
- package/lib/ExternalsPlugin.js +21 -21
- package/lib/FlagDependencyExportsPlugin.js +101 -101
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/FunctionModulePlugin.js +24 -24
- package/lib/HashedModuleIdsPlugin.js +42 -42
- package/lib/HotModuleReplacementPlugin.js +5 -5
- package/lib/HotUpdateChunkTemplate.js +31 -31
- package/lib/IgnorePlugin.js +69 -69
- package/lib/JsonpExportMainTemplatePlugin.js +37 -37
- package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/JsonpMainTemplatePlugin.js +4 -3
- package/lib/JsonpTemplatePlugin.js +21 -21
- package/lib/LibManifestPlugin.js +63 -63
- package/lib/LibraryTemplatePlugin.js +92 -92
- package/lib/LoaderOptionsPlugin.js +36 -36
- package/lib/LoaderTargetPlugin.js +19 -19
- package/lib/MainTemplate.js +3 -1
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleDependencyError.js +22 -22
- package/lib/ModuleDependencyWarning.js +22 -22
- package/lib/ModuleError.js +24 -24
- package/lib/ModuleFilenameHelpers.js +162 -162
- package/lib/ModuleNotFoundError.js +26 -26
- package/lib/ModuleReason.js +50 -50
- package/lib/ModuleTemplate.js +23 -23
- package/lib/ModuleWarning.js +24 -24
- package/lib/MovedToPluginWarningPlugin.js +21 -21
- package/lib/MultiCompiler.js +164 -164
- package/lib/MultiEntryPlugin.js +39 -39
- package/lib/MultiModuleFactory.js +19 -19
- package/lib/MultiStats.js +79 -79
- package/lib/MultiWatching.js +32 -32
- package/lib/NamedChunksPlugin.js +30 -30
- package/lib/NamedModulesPlugin.js +27 -27
- package/lib/NewWatchingPlugin.js +15 -15
- package/lib/NoEmitOnErrorsPlugin.js +22 -22
- package/lib/NoErrorsPlugin.js +29 -29
- package/lib/NodeStuffPlugin.js +97 -97
- package/lib/NormalModuleFactory.js +3 -1
- package/lib/NormalModuleReplacementPlugin.js +45 -45
- package/lib/NullFactory.js +12 -12
- package/lib/OptionsApply.js +10 -10
- package/lib/OptionsDefaulter.js +2 -2
- package/lib/Parser.js +79 -0
- package/lib/ParserHelpers.js +85 -85
- package/lib/PrefetchPlugin.js +31 -31
- package/lib/ProgressPlugin.js +192 -192
- package/lib/ProvidePlugin.js +55 -55
- package/lib/RawModule.js +54 -54
- package/lib/RequestShortener.js +63 -63
- package/lib/RequireJsStuffPlugin.js +31 -31
- package/lib/RuleSet.js +444 -444
- package/lib/SetVarMainTemplatePlugin.js +41 -41
- package/lib/SingleEntryPlugin.js +35 -35
- package/lib/SizeFormatHelpers.js +18 -18
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
- package/lib/SourceMapDevToolPlugin.js +3 -3
- package/lib/Stats.js +4 -2
- package/lib/TemplatedPathPlugin.js +6 -2
- package/lib/UmdMainTemplatePlugin.js +1 -1
- package/lib/UnsupportedFeatureWarning.js +21 -21
- package/lib/UseStrictPlugin.js +34 -34
- package/lib/WarnCaseSensitiveModulesPlugin.js +31 -31
- package/lib/WatchIgnorePlugin.js +49 -49
- package/lib/WebpackError.js +11 -11
- package/lib/WebpackOptionsDefaulter.js +130 -129
- package/lib/WebpackOptionsValidationError.js +219 -196
- package/lib/compareLocations.js +36 -36
- package/lib/dependencies/AMDDefineDependency.js +142 -142
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +18 -6
- package/lib/dependencies/AMDPlugin.js +119 -119
- package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
- package/lib/dependencies/AMDRequireDependency.js +67 -67
- package/lib/dependencies/AMDRequireItemDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
- package/lib/dependencies/ConstDependency.js +32 -32
- package/lib/dependencies/ContextDependencyHelpers.js +71 -71
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/CriticalDependencyWarning.js +20 -20
- package/lib/dependencies/DelegatedExportsDependency.js +33 -33
- package/lib/dependencies/DelegatedSourceDependency.js +18 -18
- package/lib/dependencies/DllEntryDependency.js +20 -20
- package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +2 -2
- package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
- package/lib/dependencies/HarmonyImportDependency.js +1 -1
- package/lib/dependencies/ImportDependenciesBlock.js +17 -17
- package/lib/dependencies/ImportEagerContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
- package/lib/dependencies/ImportParserPlugin.js +89 -89
- package/lib/dependencies/ImportPlugin.js +60 -60
- package/lib/dependencies/ImportWeakContextDependency.js +22 -22
- package/lib/dependencies/LoaderDependency.js +18 -18
- package/lib/dependencies/LoaderPlugin.js +60 -60
- package/lib/dependencies/LocalModule.js +23 -23
- package/lib/dependencies/LocalModuleDependency.js +24 -24
- package/lib/dependencies/LocalModulesHelpers.js +46 -46
- package/lib/dependencies/ModuleDependency.js +23 -23
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
- package/lib/dependencies/MultiEntryDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +24 -24
- package/lib/dependencies/PrefetchDependency.js +18 -18
- package/lib/dependencies/RequireContextDependency.js +26 -26
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
- package/lib/dependencies/RequireContextPlugin.js +96 -96
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
- package/lib/dependencies/RequireEnsureDependency.js +38 -38
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
- package/lib/dependencies/RequireEnsurePlugin.js +40 -40
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependency.js +8 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
- package/lib/dependencies/RequireIncludePlugin.js +33 -33
- package/lib/dependencies/RequireResolveDependency.js +22 -22
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SingleEntryDependency.js +18 -18
- package/lib/dependencies/SystemPlugin.js +44 -44
- package/lib/dependencies/UnsupportedDependency.js +23 -23
- package/lib/dependencies/WebpackMissingModule.js +18 -18
- package/lib/dependencies/getFunctionExpression.js +44 -44
- package/lib/formatLocation.js +54 -54
- package/lib/node/NodeChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeEnvironmentPlugin.js +25 -25
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeMainTemplate.runtime.js +24 -24
- package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
- package/lib/node/NodeOutputFileSystem.js +22 -22
- package/lib/node/NodeSourcePlugin.js +88 -88
- package/lib/node/NodeTargetPlugin.js +17 -15
- package/lib/node/NodeTemplatePlugin.js +27 -27
- package/lib/node/NodeWatchFileSystem.js +72 -72
- package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
- package/lib/optimize/ConcatenatedModule.js +17 -6
- package/lib/optimize/DedupePlugin.js +15 -15
- package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
- package/lib/optimize/LimitChunkCountPlugin.js +59 -59
- package/lib/optimize/MinChunkSizePlugin.js +65 -65
- package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
- package/lib/optimize/UglifyJsPlugin.js +9 -9
- package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
- package/lib/performance/NoAsyncChunksWarning.js +20 -20
- package/lib/performance/SizeLimitsPlugin.js +102 -102
- package/lib/prepareOptions.js +29 -29
- package/lib/removeAndDo.js +15 -15
- package/lib/util/Semaphore.js +32 -32
- package/lib/util/identifier.js +38 -38
- package/lib/validateSchema.js +66 -66
- package/lib/web/WebEnvironmentPlugin.js +18 -18
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +2 -2
- package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
- package/package.json +25 -16
- package/schemas/ajv.absolutePath.js +29 -29
- package/schemas/webpackOptionsSchema.json +405 -76
@@ -133,7 +133,9 @@ class NormalModuleFactory extends Tapable {
|
|
133
133
|
try {
|
134
134
|
loaders.forEach(item => {
|
135
135
|
if(typeof item.options === "string" && /^\?/.test(item.options)) {
|
136
|
-
|
136
|
+
const ident = item.options.substr(1);
|
137
|
+
item.options = this.ruleSet.findOptionsByIdent(ident);
|
138
|
+
item.ident = ident;
|
137
139
|
}
|
138
140
|
});
|
139
141
|
} catch(e) {
|
@@ -1,45 +1,45 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const path = require("path");
|
8
|
-
|
9
|
-
class NormalModuleReplacementPlugin {
|
10
|
-
constructor(resourceRegExp, newResource) {
|
11
|
-
this.resourceRegExp = resourceRegExp;
|
12
|
-
this.newResource = newResource;
|
13
|
-
}
|
14
|
-
|
15
|
-
apply(compiler) {
|
16
|
-
const resourceRegExp = this.resourceRegExp;
|
17
|
-
const newResource = this.newResource;
|
18
|
-
compiler.plugin("normal-module-factory", (nmf) => {
|
19
|
-
nmf.plugin("before-resolve", (result, callback) => {
|
20
|
-
if(!result) return callback();
|
21
|
-
if(resourceRegExp.test(result.request)) {
|
22
|
-
if(typeof newResource === "function") {
|
23
|
-
newResource(result);
|
24
|
-
} else {
|
25
|
-
result.request = newResource;
|
26
|
-
}
|
27
|
-
}
|
28
|
-
return callback(null, result);
|
29
|
-
});
|
30
|
-
nmf.plugin("after-resolve", (result, callback) => {
|
31
|
-
if(!result) return callback();
|
32
|
-
if(resourceRegExp.test(result.resource)) {
|
33
|
-
if(typeof newResource === "function") {
|
34
|
-
newResource(result);
|
35
|
-
} else {
|
36
|
-
result.resource = path.resolve(path.dirname(result.resource), newResource);
|
37
|
-
}
|
38
|
-
}
|
39
|
-
return callback(null, result);
|
40
|
-
});
|
41
|
-
});
|
42
|
-
}
|
43
|
-
}
|
44
|
-
|
45
|
-
module.exports = NormalModuleReplacementPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const path = require("path");
|
8
|
+
|
9
|
+
class NormalModuleReplacementPlugin {
|
10
|
+
constructor(resourceRegExp, newResource) {
|
11
|
+
this.resourceRegExp = resourceRegExp;
|
12
|
+
this.newResource = newResource;
|
13
|
+
}
|
14
|
+
|
15
|
+
apply(compiler) {
|
16
|
+
const resourceRegExp = this.resourceRegExp;
|
17
|
+
const newResource = this.newResource;
|
18
|
+
compiler.plugin("normal-module-factory", (nmf) => {
|
19
|
+
nmf.plugin("before-resolve", (result, callback) => {
|
20
|
+
if(!result) return callback();
|
21
|
+
if(resourceRegExp.test(result.request)) {
|
22
|
+
if(typeof newResource === "function") {
|
23
|
+
newResource(result);
|
24
|
+
} else {
|
25
|
+
result.request = newResource;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
return callback(null, result);
|
29
|
+
});
|
30
|
+
nmf.plugin("after-resolve", (result, callback) => {
|
31
|
+
if(!result) return callback();
|
32
|
+
if(resourceRegExp.test(result.resource)) {
|
33
|
+
if(typeof newResource === "function") {
|
34
|
+
newResource(result);
|
35
|
+
} else {
|
36
|
+
result.resource = path.resolve(path.dirname(result.resource), newResource);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
return callback(null, result);
|
40
|
+
});
|
41
|
+
});
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
module.exports = NormalModuleReplacementPlugin;
|
package/lib/NullFactory.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
class NullFactory {
|
8
|
-
create(data, callback) {
|
9
|
-
return callback();
|
10
|
-
}
|
11
|
-
}
|
12
|
-
module.exports = NullFactory;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class NullFactory {
|
8
|
+
create(data, callback) {
|
9
|
+
return callback();
|
10
|
+
}
|
11
|
+
}
|
12
|
+
module.exports = NullFactory;
|
package/lib/OptionsApply.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
class OptionsApply {
|
8
|
-
process(options, compiler) {}
|
9
|
-
}
|
10
|
-
module.exports = OptionsApply;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class OptionsApply {
|
8
|
+
process(options, compiler) {}
|
9
|
+
}
|
10
|
+
module.exports = OptionsApply;
|
package/lib/OptionsDefaulter.js
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
function getProperty(obj, name) {
|
8
8
|
name = name.split(".");
|
9
|
-
for(
|
9
|
+
for(let i = 0; i < name.length - 1; i++) {
|
10
10
|
obj = obj[name[i]];
|
11
11
|
if(typeof obj !== "object" || !obj) return;
|
12
12
|
}
|
@@ -15,7 +15,7 @@ function getProperty(obj, name) {
|
|
15
15
|
|
16
16
|
function setProperty(obj, name, value) {
|
17
17
|
name = name.split(".");
|
18
|
-
for(
|
18
|
+
for(let i = 0; i < name.length - 1; i++) {
|
19
19
|
if(typeof obj[name[i]] !== "object" && typeof obj[name[i]] !== "undefined") return;
|
20
20
|
if(!obj[name[i]]) obj[name[i]] = {};
|
21
21
|
obj = obj[name[i]];
|
package/lib/Parser.js
CHANGED
@@ -174,6 +174,15 @@ class Parser extends Tapable {
|
|
174
174
|
res.setNumber(left.number / right.number);
|
175
175
|
res.setRange(expr.range);
|
176
176
|
return res;
|
177
|
+
} else if(expr.operator === "**") {
|
178
|
+
left = this.evaluateExpression(expr.left);
|
179
|
+
right = this.evaluateExpression(expr.right);
|
180
|
+
if(!left || !right) return;
|
181
|
+
if(!left.isNumber() || !right.isNumber()) return;
|
182
|
+
res = new BasicEvaluatedExpression();
|
183
|
+
res.setNumber(Math.pow(left.number, right.number));
|
184
|
+
res.setRange(expr.range);
|
185
|
+
return res;
|
177
186
|
} else if(expr.operator === "==" || expr.operator === "===") {
|
178
187
|
left = this.evaluateExpression(expr.left);
|
179
188
|
right = this.evaluateExpression(expr.right);
|
@@ -200,6 +209,60 @@ class Parser extends Tapable {
|
|
200
209
|
} else if(left.isBoolean() && right.isBoolean()) {
|
201
210
|
return res.setBoolean(left.bool !== right.bool);
|
202
211
|
}
|
212
|
+
} else if(expr.operator === "&") {
|
213
|
+
left = this.evaluateExpression(expr.left);
|
214
|
+
right = this.evaluateExpression(expr.right);
|
215
|
+
if(!left || !right) return;
|
216
|
+
if(!left.isNumber() || !right.isNumber()) return;
|
217
|
+
res = new BasicEvaluatedExpression();
|
218
|
+
res.setNumber(left.number & right.number);
|
219
|
+
res.setRange(expr.range);
|
220
|
+
return res;
|
221
|
+
} else if(expr.operator === "|") {
|
222
|
+
left = this.evaluateExpression(expr.left);
|
223
|
+
right = this.evaluateExpression(expr.right);
|
224
|
+
if(!left || !right) return;
|
225
|
+
if(!left.isNumber() || !right.isNumber()) return;
|
226
|
+
res = new BasicEvaluatedExpression();
|
227
|
+
res.setNumber(left.number | right.number);
|
228
|
+
res.setRange(expr.range);
|
229
|
+
return res;
|
230
|
+
} else if(expr.operator === "^") {
|
231
|
+
left = this.evaluateExpression(expr.left);
|
232
|
+
right = this.evaluateExpression(expr.right);
|
233
|
+
if(!left || !right) return;
|
234
|
+
if(!left.isNumber() || !right.isNumber()) return;
|
235
|
+
res = new BasicEvaluatedExpression();
|
236
|
+
res.setNumber(left.number ^ right.number);
|
237
|
+
res.setRange(expr.range);
|
238
|
+
return res;
|
239
|
+
} else if(expr.operator === ">>>") {
|
240
|
+
left = this.evaluateExpression(expr.left);
|
241
|
+
right = this.evaluateExpression(expr.right);
|
242
|
+
if(!left || !right) return;
|
243
|
+
if(!left.isNumber() || !right.isNumber()) return;
|
244
|
+
res = new BasicEvaluatedExpression();
|
245
|
+
res.setNumber(left.number >>> right.number);
|
246
|
+
res.setRange(expr.range);
|
247
|
+
return res;
|
248
|
+
} else if(expr.operator === ">>") {
|
249
|
+
left = this.evaluateExpression(expr.left);
|
250
|
+
right = this.evaluateExpression(expr.right);
|
251
|
+
if(!left || !right) return;
|
252
|
+
if(!left.isNumber() || !right.isNumber()) return;
|
253
|
+
res = new BasicEvaluatedExpression();
|
254
|
+
res.setNumber(left.number >> right.number);
|
255
|
+
res.setRange(expr.range);
|
256
|
+
return res;
|
257
|
+
} else if(expr.operator === "<<") {
|
258
|
+
left = this.evaluateExpression(expr.left);
|
259
|
+
right = this.evaluateExpression(expr.right);
|
260
|
+
if(!left || !right) return;
|
261
|
+
if(!left.isNumber() || !right.isNumber()) return;
|
262
|
+
res = new BasicEvaluatedExpression();
|
263
|
+
res.setNumber(left.number << right.number);
|
264
|
+
res.setRange(expr.range);
|
265
|
+
return res;
|
203
266
|
}
|
204
267
|
});
|
205
268
|
this.plugin("evaluate UnaryExpression", function(expr) {
|
@@ -242,6 +305,14 @@ class Parser extends Tapable {
|
|
242
305
|
} else if(argument.isNumber()) {
|
243
306
|
return new BasicEvaluatedExpression().setBoolean(!argument.number).setRange(expr.range);
|
244
307
|
}
|
308
|
+
} else if(expr.operator === "~") {
|
309
|
+
const argument = this.evaluateExpression(expr.argument);
|
310
|
+
if(!argument) return;
|
311
|
+
if(!argument.isNumber()) return;
|
312
|
+
const res = new BasicEvaluatedExpression();
|
313
|
+
res.setNumber(~argument.number);
|
314
|
+
res.setRange(expr.range);
|
315
|
+
return res;
|
245
316
|
}
|
246
317
|
});
|
247
318
|
this.plugin("evaluate typeof undefined", function(expr) {
|
@@ -1047,6 +1118,14 @@ class Parser extends Tapable {
|
|
1047
1118
|
}
|
1048
1119
|
|
1049
1120
|
walkNewExpression(expression) {
|
1121
|
+
const callee = this.evaluateExpression(expression.callee);
|
1122
|
+
if(callee.isIdentifier()) {
|
1123
|
+
const result = this.applyPluginsBailResult("new " + callee.identifier, expression);
|
1124
|
+
if(result === true) {
|
1125
|
+
return;
|
1126
|
+
}
|
1127
|
+
}
|
1128
|
+
|
1050
1129
|
this.walkExpression(expression.callee);
|
1051
1130
|
if(expression.arguments)
|
1052
1131
|
this.walkExpressions(expression.arguments);
|
package/lib/ParserHelpers.js
CHANGED
@@ -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
|
+
};
|
package/lib/PrefetchPlugin.js
CHANGED
@@ -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;
|