/* * 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); }; }); })();