diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-10-10 03:50:11 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-10-10 03:50:11 +0200 |
commit | de4628b3a7e7618681a76c01d00c1632a96688cf (patch) | |
tree | 49d4d97cf1c591b8567c83aa2469522f7fa57d27 /thirdparty/systemjs/lib/depCache.js | |
parent | 7989859ed6520d4e8d18f48545e5998bf66e253c (diff) | |
parent | 9af485a584e47fd503ed5c62b9f6482574715f1e (diff) | |
download | wallet-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.js | 44 |
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); + }; + }); +})(); + |