move more ConstDependencies to `toConstantDependency`

This commit is contained in:
Tim Sebastian 2017-01-08 23:46:29 +11:00
parent b0665075da
commit 965b7261fa
11 changed files with 21 additions and 111 deletions

View File

@ -37,13 +37,7 @@ class APIPlugin {
params.normalModuleFactory.plugin("parser", parser => { params.normalModuleFactory.plugin("parser", parser => {
Object.keys(REPLACEMENTS).forEach(key => { Object.keys(REPLACEMENTS).forEach(key => {
parser.plugin(`expression ${key}`, expr => { parser.plugin(`expression ${key}`, ParserHelpers.toConstantDependency(REPLACEMENTS[key]));
const dep = new ConstDependency(REPLACEMENTS[key], expr.range);
dep.loc = expr.loc;
parser.state.current.addDependency(dep);
return true;
});
parser.plugin(`evaluate typeof ${key}`, ParserHelpers.evaluateToString(REPLACEMENT_TYPES[key])); parser.plugin(`evaluate typeof ${key}`, ParserHelpers.evaluateToString(REPLACEMENT_TYPES[key]));
}); });
IGNORES.forEach(key => { IGNORES.forEach(key => {

View File

@ -73,12 +73,7 @@ class DefinePlugin {
res.setRange(expr.range); res.setRange(expr.range);
return res; return res;
}); });
parser.plugin("expression " + key, (expr) => { parser.plugin("expression " + key, ParserHelpers.toConstantDependency(code));
let dep = new ConstDependency(code, expr.range);
dep.loc = expr.loc;
parser.state.current.addDependency(dep);
return true;
});
} }
let typeofCode = isTypeof ? code : "typeof (" + code + ")"; let typeofCode = isTypeof ? code : "typeof (" + code + ")";
parser.plugin("evaluate typeof " + key, (expr) => { parser.plugin("evaluate typeof " + key, (expr) => {
@ -91,10 +86,7 @@ class DefinePlugin {
parser.plugin("typeof " + key, (expr) => { parser.plugin("typeof " + key, (expr) => {
let res = parser.evaluate(typeofCode); let res = parser.evaluate(typeofCode);
if(!res.isString()) return; if(!res.isString()) return;
let dep = new ConstDependency(JSON.stringify(res.string), expr.range); return ParserHelpers.toConstantDependency(JSON.stringify(res.string)).bind(parser)(expr);
dep.loc = expr.loc;
parser.state.current.addDependency(dep);
return true;
}); });
} }
@ -103,18 +95,8 @@ class DefinePlugin {
parser.plugin("can-rename " + key, () => true); parser.plugin("can-rename " + key, () => true);
parser.plugin("evaluate Identifier " + key, (expr) => new BasicEvaluatedExpression().setRange(expr.range)); parser.plugin("evaluate Identifier " + key, (expr) => new BasicEvaluatedExpression().setRange(expr.range));
parser.plugin("evaluate typeof " + key, ParserHelpers.evaluateToString("object")); parser.plugin("evaluate typeof " + key, ParserHelpers.evaluateToString("object"));
parser.plugin("expression " + key, (expr) => { parser.plugin("expression " + key, ParserHelpers.toConstantDependency(code));
let dep = new ConstDependency(code, expr.range); parser.plugin("typeof " + key, ParserHelpers.toConstantDependency(JSON.stringify("object")));
dep.loc = expr.loc;
parser.state.current.addDependency(dep);
return true;
});
parser.plugin("typeof " + key, (expr) => {
let dep = new ConstDependency("\"object\"", expr.range);
dep.loc = expr.loc;
parser.state.current.addDependency(dep);
return true;
});
} }
}); });
}); });

View File

@ -34,12 +34,7 @@ ExtendedAPIPlugin.prototype.apply = function(compiler) {
params.normalModuleFactory.plugin("parser", function(parser, parserOptions) { params.normalModuleFactory.plugin("parser", function(parser, parserOptions) {
Object.keys(REPLACEMENTS).forEach(function(key) { Object.keys(REPLACEMENTS).forEach(function(key) {
parser.plugin("expression " + key, function(expr) { parser.plugin("expression " + key, ParserHelpers.toConstantDependency(REPLACEMENTS[key]));
var dep = new ConstDependency(REPLACEMENTS[key], expr.range);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
parser.plugin("evaluate typeof " + key, ParserHelpers.evaluateToString(REPLACEMENT_TYPES[key])); parser.plugin("evaluate typeof " + key, ParserHelpers.evaluateToString(REPLACEMENT_TYPES[key]));
}); });
}); });

View File

@ -197,12 +197,7 @@ HotModuleReplacementPlugin.prototype.apply = function(compiler) {
}); });
params.normalModuleFactory.plugin("parser", function(parser, parserOptions) { params.normalModuleFactory.plugin("parser", function(parser, parserOptions) {
parser.plugin("expression __webpack_hash__", function(expr) { parser.plugin("expression __webpack_hash__", ParserHelpers.toConstantDependency("__webpack_require__.h()"));
var dep = new ConstDependency("__webpack_require__.h()", expr.range);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
parser.plugin("evaluate typeof __webpack_hash__", ParserHelpers.evaluateToString("string")); parser.plugin("evaluate typeof __webpack_hash__", ParserHelpers.evaluateToString("string"));
parser.plugin("evaluate Identifier module.hot", function(expr) { parser.plugin("evaluate Identifier module.hot", function(expr) {
return new BasicEvaluatedExpression() return new BasicEvaluatedExpression()

View File

@ -72,28 +72,13 @@ NodeStuffPlugin.prototype.apply = function(compiler) {
res.setRange(expr.range); res.setRange(expr.range);
return res; return res;
}); });
parser.plugin("expression require.main", function(expr) { parser.plugin("expression require.main", ParserHelpers.toConstantDependency("__webpack_require__.c[__webpack_require__.s]"));
var dep = new ConstDependency("__webpack_require__.c[__webpack_require__.s]", expr.range);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
parser.plugin( parser.plugin(
"expression require.extensions", "expression require.extensions",
ParserHelpers.expressionIsUnsupported("require.extensions is not supported by webpack. Use a loader instead.") ParserHelpers.expressionIsUnsupported("require.extensions is not supported by webpack. Use a loader instead.")
); );
parser.plugin("expression module.loaded", function(expr) { parser.plugin("expression module.loaded", ParserHelpers.toConstantDependency("module.l"));
var dep = new ConstDependency("module.l", expr.range); parser.plugin("expression module.id", ParserHelpers.toConstantDependency("module.i"));
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
parser.plugin("expression module.id", function(expr) {
var dep = new ConstDependency("module.i", expr.range);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
parser.plugin("expression module.exports", function() { parser.plugin("expression module.exports", function() {
var module = this.state.module; var module = this.state.module;
var isHarmony = module.meta && module.meta.harmonyModule; var isHarmony = module.meta && module.meta.harmonyModule;

View File

@ -44,9 +44,7 @@ ProvidePlugin.prototype.apply = function(compiler) {
return false; return false;
} }
if(scopedName) { if(scopedName) {
var dep = new ConstDependency(nameIdentifier, expr.range); ParserHelpers.toConstantDependency(nameIdentifier).bind(this)(expr);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
} }
return true; return true;
}); });

View File

@ -4,6 +4,7 @@
*/ */
"use strict"; "use strict";
const ParserHelpers = require("./ParserHelpers");
const ConstDependency = require("./dependencies/ConstDependency"); const ConstDependency = require("./dependencies/ConstDependency");
const NullFactory = require("./NullFactory"); const NullFactory = require("./NullFactory");
@ -18,27 +19,11 @@ module.exports = class RequireJsStuffPlugin {
if(typeof parserOptions.requireJs !== "undefined" && !parserOptions.requireJs) if(typeof parserOptions.requireJs !== "undefined" && !parserOptions.requireJs)
return; return;
function remove(expr) { parser.plugin("call require.config", ParserHelpers.toConstantDependency(";"));
var dep = new ConstDependency(";", expr.range); parser.plugin("call requirejs.config", ParserHelpers.toConstantDependency(";"));
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
}
parser.plugin("call require.config", remove);
parser.plugin("call requirejs.config", remove);
parser.plugin("expression require.version", function(expr) { parser.plugin("expression require.version", ParserHelpers.toConstantDependency(JSON.stringify("0.0.0")));
var dep = new ConstDependency(JSON.stringify("0.0.0"), expr.range); parser.plugin("expression requirejs.onError", ParserHelpers.toConstantDependency(JSON.stringify("__webpack_require__.oe")));
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
parser.plugin("expression requirejs.onError", function(expr) {
var dep = new ConstDependency(JSON.stringify("__webpack_require__.oe"), expr.range);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
}); });
}); });
} }

View File

@ -2,13 +2,13 @@
MIT License http://www.opensource.org/licenses/mit-license.php MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra Author Tobias Koppers @sokra
*/ */
var ConstDependency = require("./ConstDependency");
var CommonJsRequireDependency = require("./CommonJsRequireDependency"); var CommonJsRequireDependency = require("./CommonJsRequireDependency");
var CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency"); var CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
var RequireHeaderDependency = require("./RequireHeaderDependency"); var RequireHeaderDependency = require("./RequireHeaderDependency");
var LocalModuleDependency = require("./LocalModuleDependency"); var LocalModuleDependency = require("./LocalModuleDependency");
var ContextDependencyHelpers = require("./ContextDependencyHelpers"); var ContextDependencyHelpers = require("./ContextDependencyHelpers");
var LocalModulesHelpers = require("./LocalModulesHelpers"); var LocalModulesHelpers = require("./LocalModulesHelpers");
var ParserHelpers = require("../ParserHelpers");
function CommonJsRequireDependencyParserPlugin(options) { function CommonJsRequireDependencyParserPlugin(options) {
this.options = options; this.options = options;
@ -18,12 +18,7 @@ module.exports = CommonJsRequireDependencyParserPlugin;
CommonJsRequireDependencyParserPlugin.prototype.apply = function(parser) { CommonJsRequireDependencyParserPlugin.prototype.apply = function(parser) {
var options = this.options; var options = this.options;
parser.plugin("expression require.cache", function(expr) { parser.plugin("expression require.cache", ParserHelpers.toConstantDependency("__webpack_require__.c"));
var dep = new ConstDependency("__webpack_require__.c", expr.range);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
parser.plugin("expression require", function(expr) { parser.plugin("expression require", function(expr) {
var dep = new CommonJsRequireContextDependency(options.unknownContextRequest, options.unknownContextRecursive, options.unknownContextRegExp, expr.range); var dep = new CommonJsRequireContextDependency(options.unknownContextRequest, options.unknownContextRecursive, options.unknownContextRegExp, expr.range);
dep.critical = options.unknownContextCritical && "require function is used in a way in which dependencies cannot be statically extracted"; dep.critical = options.unknownContextCritical && "require function is used in a way in which dependencies cannot be statically extracted";

View File

@ -6,7 +6,6 @@
const RequireEnsureItemDependency = require("./RequireEnsureItemDependency"); const RequireEnsureItemDependency = require("./RequireEnsureItemDependency");
const RequireEnsureDependency = require("./RequireEnsureDependency"); const RequireEnsureDependency = require("./RequireEnsureDependency");
const ConstDependency = require("./ConstDependency");
const NullFactory = require("../NullFactory"); const NullFactory = require("../NullFactory");
@ -33,12 +32,7 @@ class RequireEnsurePlugin {
parser.apply(new RequireEnsureDependenciesBlockParserPlugin()); parser.apply(new RequireEnsureDependenciesBlockParserPlugin());
parser.plugin("evaluate typeof require.ensure", ParserHelpers.evaluateToString("function")); parser.plugin("evaluate typeof require.ensure", ParserHelpers.evaluateToString("function"));
parser.plugin("typeof require.ensure", (expr) => { parser.plugin("typeof require.ensure", ParserHelpers.toConstantDependency(JSON.stringify("function")));
const dep = new ConstDependency("'function'", expr.range);
dep.loc = expr.loc;
parser.state.current.addDependency(dep);
return true;
});
}); });
}); });
} }

View File

@ -6,7 +6,6 @@
const RequireIncludeDependency = require("./RequireIncludeDependency"); const RequireIncludeDependency = require("./RequireIncludeDependency");
const RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin"); const RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin");
const ConstDependency = require("./ConstDependency");
const ParserHelpers = require("../ParserHelpers"); const ParserHelpers = require("../ParserHelpers");
@ -26,13 +25,7 @@ class RequireIncludePlugin {
parser.apply(new RequireIncludeDependencyParserPlugin()); parser.apply(new RequireIncludeDependencyParserPlugin());
parser.plugin("evaluate typeof require.include", ParserHelpers.evaluateToString("function")); parser.plugin("evaluate typeof require.include", ParserHelpers.evaluateToString("function"));
parser.plugin("typeof require.include", (expr) => { parser.plugin("typeof require.include", ParserHelpers.toConstantDependency(JSON.stringify("function")));
const dep = new ConstDependency("'function'", expr.range);
dep.loc = expr.loc;
parser.state.current.addDependency(dep);
return true;
});
}); });
}); });
} }

View File

@ -4,7 +4,6 @@
*/ */
"use strict"; "use strict";
const ConstDependency = require("./ConstDependency");
const ParserHelpers = require("../ParserHelpers"); const ParserHelpers = require("../ParserHelpers");
class SystemPlugin { class SystemPlugin {
@ -35,12 +34,7 @@ class SystemPlugin {
setNotSupported("System.set"); setNotSupported("System.set");
setNotSupported("System.get"); setNotSupported("System.get");
setNotSupported("System.register"); setNotSupported("System.register");
parser.plugin("expression System", (expr) => { parser.plugin("expression System", ParserHelpers.toConstantDependency("{}"));
const dep = new ConstDependency("{}", expr.range);
dep.loc = expr.loc;
parser.state.current.addDependency(dep);
return true;
});
}); });
}); });
} }