webpack/lib/dependencies/ContextDependency.js

65 lines
1.8 KiB
JavaScript
Raw Normal View History

2013-01-31 01:49:25 +08:00
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict";
const Dependency = require("../Dependency");
const DependencyTemplate = require("../DependencyTemplate");
const CriticalDependencyWarning = require("./CriticalDependencyWarning");
2013-01-31 01:49:25 +08:00
2018-02-25 09:00:20 +08:00
const regExpToString = r => (r ? r + "" : "");
class ContextDependency extends Dependency {
// options: { request, recursive, regExp, include, exclude, mode, chunkName, groupOptions }
constructor(options) {
super();
this.options = options;
this.userRequest = this.options.request;
2018-04-11 23:43:56 +08:00
/** @type {false | string} */
this.critical = false;
this.hadGlobalOrStickyRegExp = false;
2018-02-25 09:00:20 +08:00
if (this.options.regExp.global || this.options.regExp.sticky) {
this.options.regExp = null;
this.hadGlobalOrStickyRegExp = true;
}
this.request = undefined;
this.range = undefined;
this.valueRange = undefined;
// TODO refactor this
this.prepend = undefined;
// TODO refactor this
this.replaces = undefined;
}
getResourceIdentifier() {
2018-02-25 09:00:20 +08:00
return (
`context${this.options.request} ${this.options.recursive} ` +
`${regExpToString(this.options.regExp)} ${regExpToString(
this.options.include
)} ${regExpToString(this.options.exclude)} ` +
`${this.options.mode} ${this.options.chunkName} ` +
`${JSON.stringify(this.options.groupOptions)}`
2018-02-25 09:00:20 +08:00
);
}
getWarnings() {
let warnings = super.getWarnings() || [];
2018-02-25 09:00:20 +08:00
if (this.critical) {
warnings.push(new CriticalDependencyWarning(this.critical));
}
2018-02-25 09:00:20 +08:00
if (this.hadGlobalOrStickyRegExp) {
warnings.push(
new CriticalDependencyWarning(
"Contexts can't use RegExps with the 'g' or 'y' flags."
)
);
}
return warnings;
}
2013-01-31 01:49:25 +08:00
}
ContextDependency.Template = DependencyTemplate;
module.exports = ContextDependency;