diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
commit | de98e0b232509d5f40c135d540a70e415272ff85 (patch) | |
tree | a79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/webpack/lib/ContextReplacementPlugin.js | |
parent | e0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff) |
node_modules
Diffstat (limited to 'node_modules/webpack/lib/ContextReplacementPlugin.js')
-rw-r--r-- | node_modules/webpack/lib/ContextReplacementPlugin.js | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/ContextReplacementPlugin.js b/node_modules/webpack/lib/ContextReplacementPlugin.js new file mode 100644 index 000000000..29fede826 --- /dev/null +++ b/node_modules/webpack/lib/ContextReplacementPlugin.js @@ -0,0 +1,111 @@ +/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const path = require("path");
+const ContextElementDependency = require("./dependencies/ContextElementDependency");
+
+class ContextReplacementPlugin {
+ constructor(resourceRegExp, newContentResource, newContentRecursive, newContentRegExp) {
+ this.resourceRegExp = resourceRegExp;
+
+ if(typeof newContentResource === "function") {
+ this.newContentCallback = newContentResource;
+ } else if(typeof newContentResource === "string" && typeof newContentRecursive === "object") {
+ this.newContentResource = newContentResource;
+ this.newContentCreateContextMap = (fs, callback) => {
+ callback(null, newContentRecursive);
+ };
+ } else if(typeof newContentResource === "string" && typeof newContentRecursive === "function") {
+ this.newContentResource = newContentResource;
+ this.newContentCreateContextMap = newContentRecursive;
+ } else {
+ if(typeof newContentResource !== "string") {
+ newContentRegExp = newContentRecursive;
+ newContentRecursive = newContentResource;
+ newContentResource = undefined;
+ }
+ if(typeof newContentRecursive !== "boolean") {
+ newContentRegExp = newContentRecursive;
+ newContentRecursive = undefined;
+ }
+ this.newContentResource = newContentResource;
+ this.newContentRecursive = newContentRecursive;
+ this.newContentRegExp = newContentRegExp;
+ }
+ }
+
+ apply(compiler) {
+ const resourceRegExp = this.resourceRegExp;
+ const newContentCallback = this.newContentCallback;
+ const newContentResource = this.newContentResource;
+ const newContentRecursive = this.newContentRecursive;
+ const newContentRegExp = this.newContentRegExp;
+ const newContentCreateContextMap = this.newContentCreateContextMap;
+
+ compiler.plugin("context-module-factory", (cmf) => {
+ cmf.plugin("before-resolve", (result, callback) => {
+ if(!result) return callback();
+ if(resourceRegExp.test(result.request)) {
+ if(typeof newContentResource !== "undefined")
+ result.request = newContentResource;
+ if(typeof newContentRecursive !== "undefined")
+ result.recursive = newContentRecursive;
+ if(typeof newContentRegExp !== "undefined")
+ result.regExp = newContentRegExp;
+ if(typeof newContentCallback === "function") {
+ newContentCallback(result);
+ } else {
+ result.dependencies.forEach((d) => {
+ if(d.critical)
+ d.critical = false;
+ });
+ }
+ }
+ return callback(null, result);
+ });
+ cmf.plugin("after-resolve", (result, callback) => {
+ if(!result) return callback();
+ if(resourceRegExp.test(result.resource)) {
+ if(typeof newContentResource !== "undefined")
+ result.resource = path.resolve(result.resource, newContentResource);
+ if(typeof newContentRecursive !== "undefined")
+ result.recursive = newContentRecursive;
+ if(typeof newContentRegExp !== "undefined")
+ result.regExp = newContentRegExp;
+ if(typeof newContentCreateContextMap === "function")
+ result.resolveDependencies = createResolveDependenciesFromContextMap(newContentCreateContextMap);
+ if(typeof newContentCallback === "function") {
+ const origResource = result.resource;
+ newContentCallback(result);
+ if(result.resource !== origResource) {
+ result.resource = path.resolve(origResource, result.resource);
+ }
+ } else {
+ result.dependencies.forEach((d) => {
+ if(d.critical)
+ d.critical = false;
+ });
+ }
+ }
+ return callback(null, result);
+ });
+ });
+ }
+}
+
+const createResolveDependenciesFromContextMap = (createContextMap) => {
+ return function resolveDependenciesFromContextMap(fs, resource, recursive, regExp, callback) {
+ createContextMap(fs, (err, map) => {
+ if(err) return callback(err);
+ const dependencies = Object.keys(map).map((key) => {
+ return new ContextElementDependency(map[key], key);
+ });
+ callback(null, dependencies);
+ });
+ };
+};
+
+module.exports = ContextReplacementPlugin;
|