@nguniversal/module-map-ngfactory-loader
Version:
NgFactoryLoader which uses a Map to load ngfactories without lazy loading
86 lines • 5.82 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { Injectable, InjectionToken, Inject, Compiler } from '@angular/core';
/**
* Token used by the ModuleMapNgFactoryLoader to load modules
* @type {?}
*/
export const MODULE_MAP = new InjectionToken('MODULE_MAP');
/**
* NgModuleFactoryLoader which does not lazy load
*/
export class ModuleMapNgFactoryLoader {
/**
* @param {?} compiler
* @param {?} moduleMap
*/
constructor(compiler, moduleMap) {
this.compiler = compiler;
this.moduleMap = moduleMap;
}
/**
* @param {?} loadChildrenString
* @return {?}
*/
load(loadChildrenString) {
/** @type {?} */
const offlineMode = this.compiler instanceof Compiler;
/** @type {?} */
const type = this.moduleMap[loadChildrenString];
if (!type) {
throw new Error(`${loadChildrenString} did not exist in the MODULE_MAP`);
}
return offlineMode ?
this.loadFactory((/** @type {?} */ (type))) : this.loadAndCompile((/** @type {?} */ (type)));
}
/**
* @private
* @param {?} factory
* @return {?}
*/
loadFactory(factory) {
return new Promise((/**
* @param {?} resolve
* @return {?}
*/
resolve => resolve(factory)));
}
/**
* @private
* @param {?} type
* @return {?}
*/
loadAndCompile(type) {
return this.compiler.compileModuleAsync(type);
}
}
ModuleMapNgFactoryLoader.decorators = [
{ type: Injectable }
];
/** @nocollapse */
ModuleMapNgFactoryLoader.ctorParameters = () => [
{ type: Compiler },
{ type: undefined, decorators: [{ type: Inject, args: [MODULE_MAP,] }] }
];
if (false) {
/**
* @type {?}
* @private
*/
ModuleMapNgFactoryLoader.prototype.compiler;
/**
* @type {?}
* @private
*/
ModuleMapNgFactoryLoader.prototype.moduleMap;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW1hcC1uZ2ZhY3RvcnktbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9tb2R1bGUtbWFwLW5nZmFjdG9yeS1sb2FkZXIvc3JjL21vZHVsZS1tYXAtbmdmYWN0b3J5LWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQU9BLE9BQU8sRUFDTCxVQUFVLEVBRVYsY0FBYyxFQUVkLE1BQU0sRUFFTixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7Ozs7O0FBTXZCLE1BQU0sT0FBTyxVQUFVLEdBQThCLElBQUksY0FBYyxDQUFDLFlBQVksQ0FBQzs7OztBQU1yRixNQUFNLE9BQU8sd0JBQXdCOzs7OztJQUNuQyxZQUFvQixRQUFrQixFQUE4QixTQUFvQjtRQUFwRSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQThCLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFBSSxDQUFDOzs7OztJQUU3RixJQUFJLENBQUMsa0JBQTBCOztjQUN2QixXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsWUFBWSxRQUFROztjQUMvQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztRQUUvQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLGtCQUFrQixrQ0FBa0MsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsT0FBTyxXQUFXLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUF1QixJQUFJLEVBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFZLElBQUksRUFBQSxDQUFDLENBQUM7SUFDMUYsQ0FBQzs7Ozs7O0lBRU8sV0FBVyxDQUFDLE9BQTZCO1FBQy9DLE9BQU8sSUFBSSxPQUFPOzs7O1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQztJQUNsRCxDQUFDOzs7Ozs7SUFFTyxjQUFjLENBQUMsSUFBZTtRQUNwQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7O1lBdEJGLFVBQVU7Ozs7WUFaVCxRQUFROzRDQWNpQyxNQUFNLFNBQUMsVUFBVTs7Ozs7OztJQUE5Qyw0Q0FBMEI7Ozs7O0lBQUUsNkNBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBOZ01vZHVsZUZhY3RvcnlMb2FkZXIsXG4gIEluamVjdGlvblRva2VuLFxuICBOZ01vZHVsZUZhY3RvcnksXG4gIEluamVjdCxcbiAgVHlwZSxcbiAgQ29tcGlsZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01vZHVsZU1hcH0gZnJvbSAnLi9tb2R1bGUtbWFwJztcblxuLyoqXG4gKiBUb2tlbiB1c2VkIGJ5IHRoZSBNb2R1bGVNYXBOZ0ZhY3RvcnlMb2FkZXIgdG8gbG9hZCBtb2R1bGVzXG4gKi9cbmV4cG9ydCBjb25zdCBNT0RVTEVfTUFQOiBJbmplY3Rpb25Ub2tlbjxNb2R1bGVNYXA+ID0gbmV3IEluamVjdGlvblRva2VuKCdNT0RVTEVfTUFQJyk7XG5cbi8qKlxuICogTmdNb2R1bGVGYWN0b3J5TG9hZGVyIHdoaWNoIGRvZXMgbm90IGxhenkgbG9hZFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTW9kdWxlTWFwTmdGYWN0b3J5TG9hZGVyIGltcGxlbWVudHMgTmdNb2R1bGVGYWN0b3J5TG9hZGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXIsIEBJbmplY3QoTU9EVUxFX01BUCkgcHJpdmF0ZSBtb2R1bGVNYXA6IE1vZHVsZU1hcCkgeyB9XG5cbiAgbG9hZChsb2FkQ2hpbGRyZW5TdHJpbmc6IHN0cmluZyk6IFByb21pc2U8TmdNb2R1bGVGYWN0b3J5PGFueT4+IHtcbiAgICBjb25zdCBvZmZsaW5lTW9kZSA9IHRoaXMuY29tcGlsZXIgaW5zdGFuY2VvZiBDb21waWxlcjtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5tb2R1bGVNYXBbbG9hZENoaWxkcmVuU3RyaW5nXTtcblxuICAgIGlmICghdHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2xvYWRDaGlsZHJlblN0cmluZ30gZGlkIG5vdCBleGlzdCBpbiB0aGUgTU9EVUxFX01BUGApO1xuICAgIH1cblxuICAgIHJldHVybiBvZmZsaW5lTW9kZSA/XG4gICAgICB0aGlzLmxvYWRGYWN0b3J5KDxOZ01vZHVsZUZhY3Rvcnk8YW55Pj4gdHlwZSkgOiB0aGlzLmxvYWRBbmRDb21waWxlKDxUeXBlPGFueT4+IHR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRmFjdG9yeShmYWN0b3J5OiBOZ01vZHVsZUZhY3Rvcnk8YW55Pik6IFByb21pc2U8TmdNb2R1bGVGYWN0b3J5PGFueT4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlKGZhY3RvcnkpKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFuZENvbXBpbGUodHlwZTogVHlwZTxhbnk+KTogUHJvbWlzZTxOZ01vZHVsZUZhY3Rvcnk8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmNvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3luYyh0eXBlKTtcbiAgfVxufVxuIl19