UNPKG

4.49 kBJavaScriptView Raw
1import { Injectable, Injector, OpaqueToken } from '@angular/core';
2import { NgModuleLoader } from './ng-module-loader';
3import { requestIonicCallback } from './util';
4export var /** @type {?} */ LAZY_LOADED_TOKEN = new OpaqueToken('LZYCMP');
5/**
6 * @hidden
7 */
8var ModuleLoader = (function () {
9 /**
10 * @param {?} _ngModuleLoader
11 * @param {?} _injector
12 */
13 function ModuleLoader(_ngModuleLoader, _injector) {
14 this._ngModuleLoader = _ngModuleLoader;
15 this._injector = _injector;
16 /**
17 * \@internal
18 */
19 this._cfrMap = new Map();
20 this._promiseMap = new Map();
21 }
22 /**
23 * @param {?} modulePath
24 * @return {?}
25 */
26 ModuleLoader.prototype.load = function (modulePath) {
27 var _this = this;
28 (void 0) /* console.time */;
29 var /** @type {?} */ splitString = modulePath.split(SPLITTER);
30 var /** @type {?} */ promise = this._promiseMap.get(modulePath);
31 if (!promise) {
32 promise = this._ngModuleLoader.load(splitString[0], splitString[1]);
33 this._promiseMap.set(modulePath, promise);
34 }
35 return promise.then(function (loadedModule) {
36 (void 0) /* console.timeEnd */;
37 var /** @type {?} */ ref = loadedModule.create(_this._injector);
38 var /** @type {?} */ component = ref.injector.get(LAZY_LOADED_TOKEN);
39 _this._cfrMap.set(component, ref.componentFactoryResolver);
40 return {
41 componentFactoryResolver: ref.componentFactoryResolver,
42 component: component
43 };
44 });
45 };
46 /**
47 * @param {?} component
48 * @return {?}
49 */
50 ModuleLoader.prototype.getComponentFactoryResolver = function (component) {
51 return this._cfrMap.get(component);
52 };
53 return ModuleLoader;
54}());
55export { ModuleLoader };
56ModuleLoader.decorators = [
57 { type: Injectable },
58];
59/**
60 * @nocollapse
61 */
62ModuleLoader.ctorParameters = function () { return [
63 { type: NgModuleLoader, },
64 { type: Injector, },
65]; };
66function ModuleLoader_tsickle_Closure_declarations() {
67 /** @type {?} */
68 ModuleLoader.decorators;
69 /**
70 * @nocollapse
71 * @type {?}
72 */
73 ModuleLoader.ctorParameters;
74 /**
75 * \@internal
76 * @type {?}
77 */
78 ModuleLoader.prototype._cfrMap;
79 /** @type {?} */
80 ModuleLoader.prototype._promiseMap;
81 /** @type {?} */
82 ModuleLoader.prototype._ngModuleLoader;
83 /** @type {?} */
84 ModuleLoader.prototype._injector;
85}
86var /** @type {?} */ SPLITTER = '#';
87/**
88 * @hidden
89 * @param {?} ngModuleLoader
90 * @param {?} injector
91 * @return {?}
92 */
93export function provideModuleLoader(ngModuleLoader, injector) {
94 return new ModuleLoader(ngModuleLoader, injector);
95}
96/**
97 * @hidden
98 * @param {?} config
99 * @param {?} deepLinkConfig
100 * @param {?} moduleLoader
101 * @return {?}
102 */
103export function setupPreloadingImplementation(config, deepLinkConfig, moduleLoader) {
104 if (!deepLinkConfig || !deepLinkConfig.links || !config.getBoolean('preloadModules')) {
105 return Promise.resolve();
106 }
107 var /** @type {?} */ linksToLoad = deepLinkConfig.links.filter(function (link) { return !!link.loadChildren && link.priority !== 'off'; });
108 // Load the high priority modules first
109 var /** @type {?} */ highPriorityPromises = linksToLoad
110 .filter(function (link) { return link.priority === 'high'; })
111 .map(function (link) { return moduleLoader.load(link.loadChildren); });
112 return Promise.all(highPriorityPromises).then(function () {
113 // Load the low priority modules after the high priority are done
114 var /** @type {?} */ lowPriorityPromises = linksToLoad
115 .filter(function (link) { return link.priority === 'low'; })
116 .map(function (link) { return moduleLoader.load(link.loadChildren); });
117 return Promise.all(lowPriorityPromises);
118 }).catch(function (err) {
119 console.error(err.message);
120 });
121}
122/**
123 * @hidden
124 * @param {?} config
125 * @param {?} deepLinkConfig
126 * @param {?} moduleLoader
127 * @param {?} ngZone
128 * @return {?}
129 */
130export function setupPreloading(config, deepLinkConfig, moduleLoader, ngZone) {
131 return function () {
132 requestIonicCallback(function () {
133 ngZone.runOutsideAngular(function () {
134 setupPreloadingImplementation(config, deepLinkConfig, moduleLoader);
135 });
136 });
137 };
138}
139//# sourceMappingURL=module-loader.js.map
\No newline at end of file