aboutsummaryrefslogtreecommitdiff
path: root/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
commitde98e0b232509d5f40c135d540a70e415272ff85 (patch)
treea79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js
parente0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff)
node_modules
Diffstat (limited to 'node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js')
-rw-r--r--node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js b/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js
new file mode 100644
index 000000000..61d9b4730
--- /dev/null
+++ b/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js
@@ -0,0 +1,41 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+var createInnerCallback = require("./createInnerCallback");
+
+function UnsafeCachePlugin(source, filterPredicate, cache, target) {
+ this.source = source;
+ this.filterPredicate = filterPredicate;
+ this.cache = cache || {};
+ this.target = target;
+}
+module.exports = UnsafeCachePlugin;
+
+function getCacheId(request) {
+ return JSON.stringify({
+ context: request.context,
+ path: request.path,
+ query: request.query,
+ request: request.request
+ });
+}
+
+UnsafeCachePlugin.prototype.apply = function(resolver) {
+ var filterPredicate = this.filterPredicate;
+ var cache = this.cache;
+ var target = this.target;
+ resolver.plugin(this.source, function(request, callback) {
+ if(!filterPredicate(request)) return callback();
+ var cacheId = getCacheId(request);
+ var cacheEntry = cache[cacheId];
+ if(cacheEntry) {
+ return callback(null, cacheEntry);
+ }
+ resolver.doResolve(target, request, null, createInnerCallback(function(err, result) {
+ if(err) return callback(err);
+ if(result) return callback(null, cache[cacheId] = result);
+ callback();
+ }, callback));
+ });
+};