aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/systemjs/lib/depCache.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-10-10 03:50:11 +0200
committerFlorian Dold <florian.dold@gmail.com>2016-10-10 03:50:11 +0200
commitde4628b3a7e7618681a76c01d00c1632a96688cf (patch)
tree49d4d97cf1c591b8567c83aa2469522f7fa57d27 /thirdparty/systemjs/lib/depCache.js
parent7989859ed6520d4e8d18f48545e5998bf66e253c (diff)
parent9af485a584e47fd503ed5c62b9f6482574715f1e (diff)
downloadwallet-core-de4628b3a7e7618681a76c01d00c1632a96688cf.tar.xz
Merge commit '9af485a584e47fd503ed5c62b9f6482574715f1e' as 'thirdparty/systemjs'
Diffstat (limited to 'thirdparty/systemjs/lib/depCache.js')
-rw-r--r--thirdparty/systemjs/lib/depCache.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/thirdparty/systemjs/lib/depCache.js b/thirdparty/systemjs/lib/depCache.js
new file mode 100644
index 000000000..ced47a0e3
--- /dev/null
+++ b/thirdparty/systemjs/lib/depCache.js
@@ -0,0 +1,44 @@
+/*
+ * Dependency Tree Cache
+ *
+ * Allows a build to pre-populate a dependency trace tree on the loader of
+ * the expected dependency tree, to be loaded upfront when requesting the
+ * module, avoinding the n round trips latency of module loading, where
+ * n is the dependency tree depth.
+ *
+ * eg:
+ * SystemJS.depCache = {
+ * 'app': ['normalized', 'deps'],
+ * 'normalized': ['another'],
+ * 'deps': ['tree']
+ * };
+ *
+ * SystemJS.import('app')
+ * // simultaneously starts loading all of:
+ * // 'normalized', 'deps', 'another', 'tree'
+ * // before "app" source is even loaded
+ *
+ */
+
+(function() {
+ hookConstructor(function(constructor) {
+ return function() {
+ constructor.call(this);
+ this.depCache = {};
+ }
+ });
+
+ hook('locate', function(locate) {
+ return function(load) {
+ var loader = this;
+ // load direct deps, in turn will pick up their trace trees
+ var deps = loader.depCache[load.name];
+ if (deps)
+ for (var i = 0; i < deps.length; i++)
+ loader['import'](deps[i], load.name);
+
+ return locate.call(loader, load);
+ };
+ });
+})();
+