mirror of https://github.com/webpack/webpack.git
Merge pull request #5753 from simon-paris/master
Fix for #5750 - Refuse to use regexes with g or y flags in contexts
This commit is contained in:
commit
be72b2a8c2
|
|
@ -5,7 +5,6 @@
|
|||
"use strict";
|
||||
|
||||
const ContextDependency = require("./ContextDependency");
|
||||
const CriticalDependencyWarning = require("./CriticalDependencyWarning");
|
||||
class AMDRequireContextDependency extends ContextDependency {
|
||||
constructor(request, recursive, regExp, range, valueRange) {
|
||||
super(request, recursive, regExp);
|
||||
|
|
@ -16,14 +15,6 @@ class AMDRequireContextDependency extends ContextDependency {
|
|||
get type() {
|
||||
return "amd require context";
|
||||
}
|
||||
|
||||
getWarnings() {
|
||||
if(this.critical) {
|
||||
return [
|
||||
new CriticalDependencyWarning(this.critical)
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
AMDRequireContextDependency.Template = require("./ContextDependencyTemplateAsRequireCall");
|
||||
module.exports = AMDRequireContextDependency;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
*/
|
||||
"use strict";
|
||||
const ContextDependency = require("./ContextDependency");
|
||||
const CriticalDependencyWarning = require("./CriticalDependencyWarning");
|
||||
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
||||
|
||||
class CommonJsRequireContextDependency extends ContextDependency {
|
||||
|
|
@ -18,15 +17,6 @@ class CommonJsRequireContextDependency extends ContextDependency {
|
|||
return "cjs require context";
|
||||
}
|
||||
|
||||
getWarnings() {
|
||||
if(!this.critical) {
|
||||
return;
|
||||
}
|
||||
|
||||
return [
|
||||
new CriticalDependencyWarning(this.critical)
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
CommonJsRequireContextDependency.Template = ContextDependencyTemplateAsRequireCall;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
"use strict";
|
||||
const Dependency = require("../Dependency");
|
||||
const CriticalDependencyWarning = require("./CriticalDependencyWarning");
|
||||
|
||||
class ContextDependency extends Dependency {
|
||||
constructor(request, recursive, regExp) {
|
||||
|
|
@ -13,6 +14,13 @@ class ContextDependency extends Dependency {
|
|||
this.recursive = recursive;
|
||||
this.regExp = regExp;
|
||||
this.async = false;
|
||||
|
||||
this.hadGlobalOrStickyRegExp = false;
|
||||
if(this.regExp.global || this.regExp.sticky) {
|
||||
this.regExp = null;
|
||||
this.hadGlobalOrStickyRegExp = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
isEqualResource(other) {
|
||||
|
|
@ -24,6 +32,18 @@ class ContextDependency extends Dependency {
|
|||
this.regExp === other.regExp &&
|
||||
this.async === other.async;
|
||||
}
|
||||
|
||||
getWarnings() {
|
||||
let warnings = super.getWarnings() || [];
|
||||
if(this.critical) {
|
||||
warnings.push(new CriticalDependencyWarning(this.critical));
|
||||
}
|
||||
if(this.hadGlobalOrStickyRegExp) {
|
||||
warnings.push(new CriticalDependencyWarning("Contexts can't use RegExps with the 'g' or 'y' flags."));
|
||||
}
|
||||
return warnings;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = ContextDependency;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
*/
|
||||
"use strict";
|
||||
const ContextDependency = require("./ContextDependency");
|
||||
const CriticalDependencyWarning = require("./CriticalDependencyWarning");
|
||||
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
||||
|
||||
class ImportContextDependency extends ContextDependency {
|
||||
|
|
@ -19,15 +18,6 @@ class ImportContextDependency extends ContextDependency {
|
|||
return "import() context";
|
||||
}
|
||||
|
||||
getWarnings() {
|
||||
if(!this.critical) {
|
||||
return;
|
||||
}
|
||||
|
||||
return [
|
||||
new CriticalDependencyWarning(this.critical)
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
ImportContextDependency.Template = ContextDependencyTemplateAsRequireCall;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
*/
|
||||
"use strict";
|
||||
const ContextDependency = require("./ContextDependency");
|
||||
const CriticalDependencyWarning = require("./CriticalDependencyWarning");
|
||||
const ContextDependencyTemplateAsId = require("./ContextDependencyTemplateAsId");
|
||||
|
||||
class RequireResolveContextDependency extends ContextDependency {
|
||||
|
|
@ -18,15 +17,6 @@ class RequireResolveContextDependency extends ContextDependency {
|
|||
return "amd require context";
|
||||
}
|
||||
|
||||
getWarnings() {
|
||||
if(!this.critical) {
|
||||
return;
|
||||
}
|
||||
|
||||
return [
|
||||
new CriticalDependencyWarning(this.critical)
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
RequireResolveContextDependency.Template = ContextDependencyTemplateAsId;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
it("should not use regexps with the g flag", function() {
|
||||
require.context("./folder", true, /a/).keys().length.should.be.eql(1);
|
||||
require.context("./folder", true, /a/g).keys().length.should.be.eql(0);
|
||||
});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = [
|
||||
[/Critical dependency: Contexts can't use RegExps with the 'g' or 'y' flags/],
|
||||
];
|
||||
Loading…
Reference in New Issue