Skip to content

Commit 2bc53db

Browse files
authored
Merge pull request webpack#6137 from ooflorent/parser_helpers
Update Parser helpers to be compatible with hooks
2 parents 14f2818 + c8e60b4 commit 2bc53db

14 files changed

+33
-33
lines changed

lib/APIPlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class APIPlugin {
4141

4242
const handler = parser => {
4343
Object.keys(REPLACEMENTS).forEach(key => {
44-
parser.plugin(`expression ${key}`, NO_WEBPACK_REQUIRE[key] ? ParserHelpers.toConstantDependency(REPLACEMENTS[key]) : ParserHelpers.toConstantDependencyWithWebpackRequire(REPLACEMENTS[key]));
44+
parser.plugin(`expression ${key}`, NO_WEBPACK_REQUIRE[key] ? ParserHelpers.toConstantDependency(parser, REPLACEMENTS[key]) : ParserHelpers.toConstantDependencyWithWebpackRequire(parser, REPLACEMENTS[key]));
4545
parser.plugin(`evaluate typeof ${key}`, ParserHelpers.evaluateToString(REPLACEMENT_TYPES[key]));
4646
});
4747
};

lib/DefinePlugin.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class DefinePlugin {
8484
res.setRange(expr.range);
8585
return res;
8686
});
87-
parser.plugin("expression " + key, /__webpack_require__/.test(code) ? ParserHelpers.toConstantDependencyWithWebpackRequire(code) : ParserHelpers.toConstantDependency(code));
87+
parser.plugin("expression " + key, /__webpack_require__/.test(code) ? ParserHelpers.toConstantDependencyWithWebpackRequire(parser, code) : ParserHelpers.toConstantDependency(parser, code));
8888
}
8989
const typeofCode = isTypeof ? code : "typeof (" + code + ")";
9090
parser.plugin("evaluate typeof " + key, (expr) => {
@@ -106,7 +106,7 @@ class DefinePlugin {
106106
parser.plugin("typeof " + key, (expr) => {
107107
const res = parser.evaluate(typeofCode);
108108
if(!res.isString()) return;
109-
return ParserHelpers.toConstantDependency(JSON.stringify(res.string)).bind(parser)(expr);
109+
return ParserHelpers.toConstantDependency(parser, JSON.stringify(res.string)).bind(parser)(expr);
110110
});
111111
};
112112

@@ -115,8 +115,8 @@ class DefinePlugin {
115115
parser.plugin("can-rename " + key, ParserHelpers.approve);
116116
parser.plugin("evaluate Identifier " + key, (expr) => new BasicEvaluatedExpression().setTruthy().setRange(expr.range));
117117
parser.plugin("evaluate typeof " + key, ParserHelpers.evaluateToString("object"));
118-
parser.plugin("expression " + key, /__webpack_require__/.test(code) ? ParserHelpers.toConstantDependencyWithWebpackRequire(code) : ParserHelpers.toConstantDependency(code));
119-
parser.plugin("typeof " + key, ParserHelpers.toConstantDependency(JSON.stringify("object")));
118+
parser.plugin("expression " + key, /__webpack_require__/.test(code) ? ParserHelpers.toConstantDependencyWithWebpackRequire(parser, code) : ParserHelpers.toConstantDependency(parser, code));
119+
parser.plugin("typeof " + key, ParserHelpers.toConstantDependency(parser, JSON.stringify("object")));
120120
};
121121

122122
walkDefinitions(definitions, "");

lib/ExtendedAPIPlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class ExtendedAPIPlugin {
4141

4242
const handler = (parser, parserOptions) => {
4343
Object.keys(REPLACEMENTS).forEach(key => {
44-
parser.plugin(`expression ${key}`, ParserHelpers.toConstantDependencyWithWebpackRequire(REPLACEMENTS[key]));
44+
parser.plugin(`expression ${key}`, ParserHelpers.toConstantDependencyWithWebpackRequire(parser, REPLACEMENTS[key]));
4545
parser.plugin(`evaluate typeof ${key}`, ParserHelpers.evaluateToString(REPLACEMENT_TYPES[key]));
4646
});
4747
};

lib/HotModuleReplacementPlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ module.exports = class HotModuleReplacementPlugin {
193193
});
194194

195195
const handler = (parser, parserOptions) => {
196-
parser.plugin("expression __webpack_hash__", ParserHelpers.toConstantDependencyWithWebpackRequire("__webpack_require__.h()"));
196+
parser.plugin("expression __webpack_hash__", ParserHelpers.toConstantDependencyWithWebpackRequire(parser, "__webpack_require__.h()"));
197197
parser.plugin("evaluate typeof __webpack_hash__", ParserHelpers.evaluateToString("string"));
198198
parser.plugin("evaluate Identifier module.hot", expr => {
199199
return ParserHelpers.evaluateToIdentifier("module.hot", !!parser.state.compilation.hotUpdateChunkTemplate)(expr);

lib/NodeStuffPlugin.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ class NodeStuffPlugin {
6565
if(!parser.state.module) return;
6666
return ParserHelpers.evaluateToString(parser.state.module.context)(expr);
6767
});
68-
parser.plugin("expression require.main", ParserHelpers.toConstantDependencyWithWebpackRequire("__webpack_require__.c[__webpack_require__.s]"));
68+
parser.plugin("expression require.main", ParserHelpers.toConstantDependencyWithWebpackRequire(parser, "__webpack_require__.c[__webpack_require__.s]"));
6969
parser.plugin(
7070
"expression require.extensions",
71-
ParserHelpers.expressionIsUnsupported("require.extensions is not supported by webpack. Use a loader instead.")
71+
ParserHelpers.expressionIsUnsupported(parser, "require.extensions is not supported by webpack. Use a loader instead.")
7272
);
73-
parser.plugin("expression module.loaded", ParserHelpers.toConstantDependency("module.l"));
74-
parser.plugin("expression module.id", ParserHelpers.toConstantDependency("module.i"));
73+
parser.plugin("expression module.loaded", ParserHelpers.toConstantDependency(parser, "module.l"));
74+
parser.plugin("expression module.id", ParserHelpers.toConstantDependency(parser, "module.i"));
7575
parser.plugin("expression module.exports", () => {
7676
const module = parser.state.module;
7777
const isHarmony = module.buildMeta && module.buildMeta.harmonyModule;

lib/ParserHelpers.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,20 @@ ParserHelpers.requireFileAsExpression = (context, pathToModule) => {
3535
return "require(" + JSON.stringify(moduleJsPath) + ")";
3636
};
3737

38-
ParserHelpers.toConstantDependency = (value) => {
38+
ParserHelpers.toConstantDependency = (parser, value) => {
3939
return function constDependency(expr) {
4040
var dep = new ConstDependency(value, expr.range, false);
4141
dep.loc = expr.loc;
42-
this.state.current.addDependency(dep);
42+
parser.state.current.addDependency(dep);
4343
return true;
4444
};
4545
};
4646

47-
ParserHelpers.toConstantDependencyWithWebpackRequire = (value) => {
47+
ParserHelpers.toConstantDependencyWithWebpackRequire = (parser, value) => {
4848
return function constDependencyWithWebpackRequire(expr) {
4949
var dep = new ConstDependency(value, expr.range, true);
5050
dep.loc = expr.loc;
51-
this.state.current.addDependency(dep);
51+
parser.state.current.addDependency(dep);
5252
return true;
5353
};
5454
};
@@ -74,13 +74,13 @@ ParserHelpers.evaluateToIdentifier = (identifier, truthy) => {
7474
};
7575
};
7676

77-
ParserHelpers.expressionIsUnsupported = (message) => {
77+
ParserHelpers.expressionIsUnsupported = (parser, message) => {
7878
return function unsupportedExpression(expr) {
7979
var dep = new ConstDependency("(void 0)", expr.range, false);
8080
dep.loc = expr.loc;
81-
this.state.current.addDependency(dep);
82-
if(!this.state.module) return;
83-
this.state.module.warnings.push(new UnsupportedFeatureWarning(this.state.module, message));
81+
parser.state.current.addDependency(dep);
82+
if(!parser.state.module) return;
83+
parser.state.module.warnings.push(new UnsupportedFeatureWarning(parser.state.module, message));
8484
return true;
8585
};
8686
};

lib/ProvidePlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class ProvidePlugin {
4545
return false;
4646
}
4747
if(scopedName) {
48-
ParserHelpers.toConstantDependency(nameIdentifier).call(parser, expr);
48+
ParserHelpers.toConstantDependency(parser, nameIdentifier)(expr);
4949
}
5050
return true;
5151
});

lib/RequireJsStuffPlugin.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ module.exports = class RequireJsStuffPlugin {
2020
if(typeof parserOptions.requireJs !== "undefined" && !parserOptions.requireJs)
2121
return;
2222

23-
parser.plugin("call require.config", ParserHelpers.toConstantDependency("undefined"));
24-
parser.plugin("call requirejs.config", ParserHelpers.toConstantDependency("undefined"));
23+
parser.plugin("call require.config", ParserHelpers.toConstantDependency(parser, "undefined"));
24+
parser.plugin("call requirejs.config", ParserHelpers.toConstantDependency(parser, "undefined"));
2525

26-
parser.plugin("expression require.version", ParserHelpers.toConstantDependency(JSON.stringify("0.0.0")));
27-
parser.plugin("expression requirejs.onError", ParserHelpers.toConstantDependencyWithWebpackRequire("__webpack_require__.oe"));
26+
parser.plugin("expression require.version", ParserHelpers.toConstantDependency(parser, JSON.stringify("0.0.0")));
27+
parser.plugin("expression requirejs.onError", ParserHelpers.toConstantDependencyWithWebpackRequire(parser, "__webpack_require__.oe"));
2828
};
2929
normalModuleFactory.hooks.parser.for("javascript/auto").tap("RequireJsStuffPlugin", handler);
3030
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("RequireJsStuffPlugin", handler);

lib/dependencies/AMDPlugin.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class AMDPlugin {
8383
parser.plugin("evaluate typeof require.amd", ParserHelpers.evaluateToString(typeof amdOptions));
8484
parser.plugin("evaluate Identifier define.amd", ParserHelpers.evaluateToIdentifier("define.amd", true));
8585
parser.plugin("evaluate Identifier require.amd", ParserHelpers.evaluateToIdentifier("require.amd", true));
86-
parser.plugin("typeof define", ParserHelpers.toConstantDependency(JSON.stringify("function")));
86+
parser.plugin("typeof define", ParserHelpers.toConstantDependency(parser, JSON.stringify("function")));
8787
parser.plugin("evaluate typeof define", ParserHelpers.evaluateToString("function"));
8888
parser.plugin("can-rename define", ParserHelpers.approve);
8989
parser.plugin("rename define", (expr) => {
@@ -93,7 +93,7 @@ class AMDPlugin {
9393
parser.state.current.addDependency(dep);
9494
return false;
9595
});
96-
parser.plugin("typeof require", ParserHelpers.toConstantDependency(JSON.stringify("function")));
96+
parser.plugin("typeof require", ParserHelpers.toConstantDependency(parser, JSON.stringify("function")));
9797
parser.plugin("evaluate typeof require", ParserHelpers.evaluateToString("function"));
9898
};
9999

lib/dependencies/CommonJsPlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class CommonJsPlugin {
5353

5454
const requireExpressions = ["require", "require.resolve", "require.resolveWeak"];
5555
for(let expression of requireExpressions) {
56-
parser.plugin(`typeof ${expression}`, ParserHelpers.toConstantDependency(JSON.stringify("function")));
56+
parser.plugin(`typeof ${expression}`, ParserHelpers.toConstantDependency(parser, JSON.stringify("function")));
5757
parser.plugin(`evaluate typeof ${expression}`, ParserHelpers.evaluateToString("function"));
5858
parser.plugin(`evaluate Identifier ${expression}`, ParserHelpers.evaluateToIdentifier(expression, true));
5959
}

lib/dependencies/CommonJsRequireDependencyParserPlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class CommonJsRequireDependencyParserPlugin {
3838
return true;
3939
};
4040

41-
parser.plugin("expression require.cache", ParserHelpers.toConstantDependencyWithWebpackRequire("__webpack_require__.c"));
41+
parser.plugin("expression require.cache", ParserHelpers.toConstantDependencyWithWebpackRequire(parser, "__webpack_require__.c"));
4242
parser.plugin("expression require", (expr) => {
4343
const dep = new CommonJsRequireContextDependency({
4444
request: options.unknownContextRequest,

lib/dependencies/RequireEnsurePlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class RequireEnsurePlugin {
3131

3232
parser.apply(new RequireEnsureDependenciesBlockParserPlugin());
3333
parser.plugin("evaluate typeof require.ensure", ParserHelpers.evaluateToString("function"));
34-
parser.plugin("typeof require.ensure", ParserHelpers.toConstantDependency(JSON.stringify("function")));
34+
parser.plugin("typeof require.ensure", ParserHelpers.toConstantDependency(parser, JSON.stringify("function")));
3535
};
3636

3737
normalModuleFactory.hooks.parser.for("javascript/auto").tap("RequireEnsurePlugin", handler);

lib/dependencies/RequireIncludePlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class RequireIncludePlugin {
2323

2424
parser.apply(new RequireIncludeDependencyParserPlugin());
2525
parser.plugin("evaluate typeof require.include", ParserHelpers.evaluateToString("function"));
26-
parser.plugin("typeof require.include", ParserHelpers.toConstantDependency(JSON.stringify("function")));
26+
parser.plugin("typeof require.include", ParserHelpers.toConstantDependency(parser, JSON.stringify("function")));
2727
};
2828

2929
normalModuleFactory.hooks.parser.for("javascript/auto").tap("RequireIncludePlugin", handler);

lib/dependencies/SystemPlugin.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ class SystemPlugin {
2121
const setNotSupported = name => {
2222
parser.plugin("evaluate typeof " + name, ParserHelpers.evaluateToString("undefined"));
2323
parser.plugin("expression " + name,
24-
ParserHelpers.expressionIsUnsupported(name + " is not supported by webpack.")
24+
ParserHelpers.expressionIsUnsupported(parser, name + " is not supported by webpack.")
2525
);
2626
};
2727

28-
parser.plugin("typeof System.import", ParserHelpers.toConstantDependency(JSON.stringify("function")));
28+
parser.plugin("typeof System.import", ParserHelpers.toConstantDependency(parser, JSON.stringify("function")));
2929
parser.plugin("evaluate typeof System.import", ParserHelpers.evaluateToString("function"));
30-
parser.plugin("typeof System", ParserHelpers.toConstantDependency(JSON.stringify("object")));
30+
parser.plugin("typeof System", ParserHelpers.toConstantDependency(parser, JSON.stringify("object")));
3131
parser.plugin("evaluate typeof System", ParserHelpers.evaluateToString("object"));
3232

3333
setNotSupported("System.set");

0 commit comments

Comments
 (0)