UNPKG

25.9 kBJavaScriptView Raw
1/**
2 * @license
3 * Copyright Google Inc. All Rights Reserved.
4 *
5 * Use of this source code is governed by an MIT-style license that can be
6 * found in the LICENSE file at https://angular.io/license
7 */
8var __extends = (this && this.__extends) || function (d, b) {
9 for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
10 function __() { this.constructor = d; }
11 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12};
13import { ErrorHandler } from '../src/error_handler';
14import { ListWrapper } from '../src/facade/collection';
15import { stringify } from '../src/facade/lang';
16import { isPromise } from '../src/util/lang';
17import { ApplicationInitStatus } from './application_init';
18import { APP_BOOTSTRAP_LISTENER, PLATFORM_INITIALIZER } from './application_tokens';
19import { Console } from './console';
20import { Injectable, Injector, OpaqueToken, Optional, ReflectiveInjector } from './di';
21import { CompilerFactory } from './linker/compiler';
22import { ComponentFactory } from './linker/component_factory';
23import { ComponentFactoryResolver } from './linker/component_factory_resolver';
24import { wtfCreateScope, wtfLeave } from './profile/profile';
25import { Testability, TestabilityRegistry } from './testability/testability';
26import { NgZone } from './zone/ng_zone';
27var /** @type {?} */ _devMode = true;
28var /** @type {?} */ _runModeLocked = false;
29var /** @type {?} */ _platform;
30/**
31 * Disable Angular's development mode, which turns off assertions and other
32 * checks within the framework.
33 *
34 * One important assertion this disables verifies that a change detection pass
35 * does not result in additional changes to any bindings (also known as
36 * unidirectional data flow).
37 *
38 * \@stable
39 * @return {?}
40 */
41export function enableProdMode() {
42 if (_runModeLocked) {
43 throw new Error('Cannot enable prod mode after platform setup.');
44 }
45 _devMode = false;
46}
47/**
48 * Returns whether Angular is in development mode. After called once,
49 * the value is locked and won't change any more.
50 *
51 * By default, this is true, unless a user calls `enableProdMode` before calling this.
52 *
53 * \@experimental APIs related to application bootstrap are currently under review.
54 * @return {?}
55 */
56export function isDevMode() {
57 _runModeLocked = true;
58 return _devMode;
59}
60/**
61 * A token for third-party components that can register themselves with NgProbe.
62 *
63 * \@experimental
64 */
65export var NgProbeToken = (function () {
66 /**
67 * @param {?} name
68 * @param {?} token
69 */
70 function NgProbeToken(name, token) {
71 this.name = name;
72 this.token = token;
73 }
74 return NgProbeToken;
75}());
76function NgProbeToken_tsickle_Closure_declarations() {
77 /** @type {?} */
78 NgProbeToken.prototype.name;
79 /** @type {?} */
80 NgProbeToken.prototype.token;
81}
82/**
83 * Creates a platform.
84 * Platforms have to be eagerly created via this function.
85 *
86 * \@experimental APIs related to application bootstrap are currently under review.
87 * @param {?} injector
88 * @return {?}
89 */
90export function createPlatform(injector) {
91 if (_platform && !_platform.destroyed) {
92 throw new Error('There can be only one platform. Destroy the previous one to create a new one.');
93 }
94 _platform = injector.get(PlatformRef);
95 var /** @type {?} */ inits = (injector.get(PLATFORM_INITIALIZER, null));
96 if (inits)
97 inits.forEach(function (init) { return init(); });
98 return _platform;
99}
100/**
101 * Creates a factory for a platform
102 *
103 * \@experimental APIs related to application bootstrap are currently under review.
104 * @param {?} parentPlatformFactory
105 * @param {?} name
106 * @param {?=} providers
107 * @return {?}
108 */
109export function createPlatformFactory(parentPlatformFactory, name, providers) {
110 if (providers === void 0) { providers = []; }
111 var /** @type {?} */ marker = new OpaqueToken("Platform: " + name);
112 return function (extraProviders) {
113 if (extraProviders === void 0) { extraProviders = []; }
114 if (!getPlatform()) {
115 if (parentPlatformFactory) {
116 parentPlatformFactory(providers.concat(extraProviders).concat({ provide: marker, useValue: true }));
117 }
118 else {
119 createPlatform(ReflectiveInjector.resolveAndCreate(providers.concat(extraProviders).concat({ provide: marker, useValue: true })));
120 }
121 }
122 return assertPlatform(marker);
123 };
124}
125/**
126 * Checks that there currently is a platform
127 * which contains the given token as a provider.
128 *
129 * \@experimental APIs related to application bootstrap are currently under review.
130 * @param {?} requiredToken
131 * @return {?}
132 */
133export function assertPlatform(requiredToken) {
134 var /** @type {?} */ platform = getPlatform();
135 if (!platform) {
136 throw new Error('No platform exists!');
137 }
138 if (!platform.injector.get(requiredToken, null)) {
139 throw new Error('A platform with a different configuration has been created. Please destroy it first.');
140 }
141 return platform;
142}
143/**
144 * Destroy the existing platform.
145 *
146 * \@experimental APIs related to application bootstrap are currently under review.
147 * @return {?}
148 */
149export function destroyPlatform() {
150 if (_platform && !_platform.destroyed) {
151 _platform.destroy();
152 }
153}
154/**
155 * Returns the current platform.
156 *
157 * \@experimental APIs related to application bootstrap are currently under review.
158 * @return {?}
159 */
160export function getPlatform() {
161 return _platform && !_platform.destroyed ? _platform : null;
162}
163/**
164 * The Angular platform is the entry point for Angular on a web page. Each page
165 * has exactly one platform, and services (such as reflection) which are common
166 * to every Angular application running on the page are bound in its scope.
167 *
168 * A page's platform is initialized implicitly when {\@link bootstrap}() is called, or
169 * explicitly by calling {\@link createPlatform}().
170 *
171 * \@stable
172 * @abstract
173 */
174export var PlatformRef = (function () {
175 function PlatformRef() {
176 }
177 /**
178 * Creates an instance of an `\@NgModule` for the given platform
179 * for offline compilation.
180 *
181 * ## Simple Example
182 *
183 * ```typescript
184 * my_module.ts:
185 *
186 * \@NgModule({
187 * imports: [BrowserModule]
188 * })
189 * class MyModule {}
190 *
191 * main.ts:
192 * import {MyModuleNgFactory} from './my_module.ngfactory';
193 * import {platformBrowser} from '\@angular/platform-browser';
194 *
195 * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);
196 * ```
197 *
198 * \@experimental APIs related to application bootstrap are currently under review.
199 * @abstract
200 * @param {?} moduleFactory
201 * @return {?}
202 */
203 PlatformRef.prototype.bootstrapModuleFactory = function (moduleFactory) { };
204 /**
205 * Creates an instance of an `\@NgModule` for a given platform using the given runtime compiler.
206 *
207 * ## Simple Example
208 *
209 * ```typescript
210 * \@NgModule({
211 * imports: [BrowserModule]
212 * })
213 * class MyModule {}
214 *
215 * let moduleRef = platformBrowser().bootstrapModule(MyModule);
216 * ```
217 * \@stable
218 * @abstract
219 * @param {?} moduleType
220 * @param {?=} compilerOptions
221 * @return {?}
222 */
223 PlatformRef.prototype.bootstrapModule = function (moduleType, compilerOptions) { };
224 /**
225 * Register a listener to be called when the platform is disposed.
226 * @abstract
227 * @param {?} callback
228 * @return {?}
229 */
230 PlatformRef.prototype.onDestroy = function (callback) { };
231 /**
232 * Retrieve the platform {\@link Injector}, which is the parent injector for
233 * every Angular application on the page and provides singleton providers.
234 * @abstract
235 * @return {?}
236 */
237 PlatformRef.prototype.injector = function () { };
238 /**
239 * Destroy the Angular platform and all Angular applications on the page.
240 * @abstract
241 * @return {?}
242 */
243 PlatformRef.prototype.destroy = function () { };
244 /**
245 * @abstract
246 * @return {?}
247 */
248 PlatformRef.prototype.destroyed = function () { };
249 return PlatformRef;
250}());
251/**
252 * @param {?} errorHandler
253 * @param {?} callback
254 * @return {?}
255 */
256function _callAndReportToErrorHandler(errorHandler, callback) {
257 try {
258 var /** @type {?} */ result = callback();
259 if (isPromise(result)) {
260 return result.catch(function (e) {
261 errorHandler.handleError(e);
262 // rethrow as the exception handler might not do it
263 throw e;
264 });
265 }
266 return result;
267 }
268 catch (e) {
269 errorHandler.handleError(e);
270 // rethrow as the exception handler might not do it
271 throw e;
272 }
273}
274export var PlatformRef_ = (function (_super) {
275 __extends(PlatformRef_, _super);
276 /**
277 * @param {?} _injector
278 */
279 function PlatformRef_(_injector) {
280 _super.call(this);
281 this._injector = _injector;
282 this._modules = [];
283 this._destroyListeners = [];
284 this._destroyed = false;
285 }
286 /**
287 * @param {?} callback
288 * @return {?}
289 */
290 PlatformRef_.prototype.onDestroy = function (callback) { this._destroyListeners.push(callback); };
291 Object.defineProperty(PlatformRef_.prototype, "injector", {
292 /**
293 * @return {?}
294 */
295 get: function () { return this._injector; },
296 enumerable: true,
297 configurable: true
298 });
299 Object.defineProperty(PlatformRef_.prototype, "destroyed", {
300 /**
301 * @return {?}
302 */
303 get: function () { return this._destroyed; },
304 enumerable: true,
305 configurable: true
306 });
307 /**
308 * @return {?}
309 */
310 PlatformRef_.prototype.destroy = function () {
311 if (this._destroyed) {
312 throw new Error('The platform has already been destroyed!');
313 }
314 this._modules.slice().forEach(function (module) { return module.destroy(); });
315 this._destroyListeners.forEach(function (listener) { return listener(); });
316 this._destroyed = true;
317 };
318 /**
319 * @param {?} moduleFactory
320 * @return {?}
321 */
322 PlatformRef_.prototype.bootstrapModuleFactory = function (moduleFactory) {
323 return this._bootstrapModuleFactoryWithZone(moduleFactory, null);
324 };
325 /**
326 * @param {?} moduleFactory
327 * @param {?} ngZone
328 * @return {?}
329 */
330 PlatformRef_.prototype._bootstrapModuleFactoryWithZone = function (moduleFactory, ngZone) {
331 var _this = this;
332 // Note: We need to create the NgZone _before_ we instantiate the module,
333 // as instantiating the module creates some providers eagerly.
334 // So we create a mini parent injector that just contains the new NgZone and
335 // pass that as parent to the NgModuleFactory.
336 if (!ngZone)
337 ngZone = new NgZone({ enableLongStackTrace: isDevMode() });
338 // Attention: Don't use ApplicationRef.run here,
339 // as we want to be sure that all possible constructor calls are inside `ngZone.run`!
340 return ngZone.run(function () {
341 var /** @type {?} */ ngZoneInjector = ReflectiveInjector.resolveAndCreate([{ provide: NgZone, useValue: ngZone }], _this.injector);
342 var /** @type {?} */ moduleRef = (moduleFactory.create(ngZoneInjector));
343 var /** @type {?} */ exceptionHandler = moduleRef.injector.get(ErrorHandler, null);
344 if (!exceptionHandler) {
345 throw new Error('No ErrorHandler. Is platform module (BrowserModule) included?');
346 }
347 moduleRef.onDestroy(function () { return ListWrapper.remove(_this._modules, moduleRef); });
348 ngZone.onError.subscribe({ next: function (error) { exceptionHandler.handleError(error); } });
349 return _callAndReportToErrorHandler(exceptionHandler, function () {
350 var /** @type {?} */ initStatus = moduleRef.injector.get(ApplicationInitStatus);
351 return initStatus.donePromise.then(function () {
352 _this._moduleDoBootstrap(moduleRef);
353 return moduleRef;
354 });
355 });
356 });
357 };
358 /**
359 * @param {?} moduleType
360 * @param {?=} compilerOptions
361 * @return {?}
362 */
363 PlatformRef_.prototype.bootstrapModule = function (moduleType, compilerOptions) {
364 if (compilerOptions === void 0) { compilerOptions = []; }
365 return this._bootstrapModuleWithZone(moduleType, compilerOptions, null);
366 };
367 /**
368 * @param {?} moduleType
369 * @param {?=} compilerOptions
370 * @param {?} ngZone
371 * @param {?=} componentFactoryCallback
372 * @return {?}
373 */
374 PlatformRef_.prototype._bootstrapModuleWithZone = function (moduleType, compilerOptions, ngZone, componentFactoryCallback) {
375 var _this = this;
376 if (compilerOptions === void 0) { compilerOptions = []; }
377 var /** @type {?} */ compilerFactory = this.injector.get(CompilerFactory);
378 var /** @type {?} */ compiler = compilerFactory.createCompiler(Array.isArray(compilerOptions) ? compilerOptions : [compilerOptions]);
379 // ugly internal api hack: generate host component factories for all declared components and
380 // pass the factories into the callback - this is used by UpdateAdapter to get hold of all
381 // factories.
382 if (componentFactoryCallback) {
383 return compiler.compileModuleAndAllComponentsAsync(moduleType)
384 .then(function (_a) {
385 var ngModuleFactory = _a.ngModuleFactory, componentFactories = _a.componentFactories;
386 componentFactoryCallback(componentFactories);
387 return _this._bootstrapModuleFactoryWithZone(ngModuleFactory, ngZone);
388 });
389 }
390 return compiler.compileModuleAsync(moduleType)
391 .then(function (moduleFactory) { return _this._bootstrapModuleFactoryWithZone(moduleFactory, ngZone); });
392 };
393 /**
394 * @param {?} moduleRef
395 * @return {?}
396 */
397 PlatformRef_.prototype._moduleDoBootstrap = function (moduleRef) {
398 var /** @type {?} */ appRef = moduleRef.injector.get(ApplicationRef);
399 if (moduleRef.bootstrapFactories.length > 0) {
400 moduleRef.bootstrapFactories.forEach(function (compFactory) { return appRef.bootstrap(compFactory); });
401 }
402 else if (moduleRef.instance.ngDoBootstrap) {
403 moduleRef.instance.ngDoBootstrap(appRef);
404 }
405 else {
406 throw new Error(("The module " + stringify(moduleRef.instance.constructor) + " was bootstrapped, but it does not declare \"@NgModule.bootstrap\" components nor a \"ngDoBootstrap\" method. ") +
407 "Please define one of these.");
408 }
409 this._modules.push(moduleRef);
410 };
411 PlatformRef_.decorators = [
412 { type: Injectable },
413 ];
414 /** @nocollapse */
415 PlatformRef_.ctorParameters = function () { return [
416 { type: Injector, },
417 ]; };
418 return PlatformRef_;
419}(PlatformRef));
420function PlatformRef__tsickle_Closure_declarations() {
421 /** @type {?} */
422 PlatformRef_.decorators;
423 /**
424 * @nocollapse
425 * @type {?}
426 */
427 PlatformRef_.ctorParameters;
428 /** @type {?} */
429 PlatformRef_.prototype._modules;
430 /** @type {?} */
431 PlatformRef_.prototype._destroyListeners;
432 /** @type {?} */
433 PlatformRef_.prototype._destroyed;
434 /** @type {?} */
435 PlatformRef_.prototype._injector;
436}
437/**
438 * A reference to an Angular application running on a page.
439 *
440 * For more about Angular applications, see the documentation for {\@link bootstrap}.
441 *
442 * \@stable
443 * @abstract
444 */
445export var ApplicationRef = (function () {
446 function ApplicationRef() {
447 }
448 /**
449 * Bootstrap a new component at the root level of the application.
450 *
451 * ### Bootstrap process
452 *
453 * When bootstrapping a new root component into an application, Angular mounts the
454 * specified application component onto DOM elements identified by the [componentType]'s
455 * selector and kicks off automatic change detection to finish initializing the component.
456 *
457 * ### Example
458 * {\@example core/ts/platform/platform.ts region='longform'}
459 * @abstract
460 * @param {?} componentFactory
461 * @return {?}
462 */
463 ApplicationRef.prototype.bootstrap = function (componentFactory) { };
464 /**
465 * Invoke this method to explicitly process change detection and its side-effects.
466 *
467 * In development mode, `tick()` also performs a second change detection cycle to ensure that no
468 * further changes are detected. If additional changes are picked up during this second cycle,
469 * bindings in the app have side-effects that cannot be resolved in a single change detection
470 * pass.
471 * In this case, Angular throws an error, since an Angular application can only have one change
472 * detection pass during which all change detection must complete.
473 * @abstract
474 * @return {?}
475 */
476 ApplicationRef.prototype.tick = function () { };
477 /**
478 * Get a list of component types registered to this application.
479 * This list is populated even before the component is created.
480 * @abstract
481 * @return {?}
482 */
483 ApplicationRef.prototype.componentTypes = function () { };
484 /**
485 * Get a list of components registered to this application.
486 * @abstract
487 * @return {?}
488 */
489 ApplicationRef.prototype.components = function () { };
490 /**
491 * Attaches a view so that it will be dirty checked.
492 * The view will be automatically detached when it is destroyed.
493 * This will throw if the view is already attached to a ViewContainer.
494 * @abstract
495 * @param {?} view
496 * @return {?}
497 */
498 ApplicationRef.prototype.attachView = function (view) { };
499 /**
500 * Detaches a view from dirty checking again.
501 * @abstract
502 * @param {?} view
503 * @return {?}
504 */
505 ApplicationRef.prototype.detachView = function (view) { };
506 /**
507 * Returns the number of attached views.
508 * @abstract
509 * @return {?}
510 */
511 ApplicationRef.prototype.viewCount = function () { };
512 return ApplicationRef;
513}());
514export var ApplicationRef_ = (function (_super) {
515 __extends(ApplicationRef_, _super);
516 /**
517 * @param {?} _zone
518 * @param {?} _console
519 * @param {?} _injector
520 * @param {?} _exceptionHandler
521 * @param {?} _componentFactoryResolver
522 * @param {?} _initStatus
523 * @param {?} _testabilityRegistry
524 * @param {?} _testability
525 */
526 function ApplicationRef_(_zone, _console, _injector, _exceptionHandler, _componentFactoryResolver, _initStatus, _testabilityRegistry, _testability) {
527 var _this = this;
528 _super.call(this);
529 this._zone = _zone;
530 this._console = _console;
531 this._injector = _injector;
532 this._exceptionHandler = _exceptionHandler;
533 this._componentFactoryResolver = _componentFactoryResolver;
534 this._initStatus = _initStatus;
535 this._testabilityRegistry = _testabilityRegistry;
536 this._testability = _testability;
537 this._bootstrapListeners = [];
538 this._rootComponents = [];
539 this._rootComponentTypes = [];
540 this._views = [];
541 this._runningTick = false;
542 this._enforceNoNewChanges = false;
543 this._enforceNoNewChanges = isDevMode();
544 this._zone.onMicrotaskEmpty.subscribe({ next: function () { _this._zone.run(function () { _this.tick(); }); } });
545 }
546 /**
547 * @param {?} viewRef
548 * @return {?}
549 */
550 ApplicationRef_.prototype.attachView = function (viewRef) {
551 var /** @type {?} */ view = ((viewRef)).internalView;
552 this._views.push(view);
553 view.attachToAppRef(this);
554 };
555 /**
556 * @param {?} viewRef
557 * @return {?}
558 */
559 ApplicationRef_.prototype.detachView = function (viewRef) {
560 var /** @type {?} */ view = ((viewRef)).internalView;
561 ListWrapper.remove(this._views, view);
562 view.detach();
563 };
564 /**
565 * @param {?} componentOrFactory
566 * @return {?}
567 */
568 ApplicationRef_.prototype.bootstrap = function (componentOrFactory) {
569 var _this = this;
570 if (!this._initStatus.done) {
571 throw new Error('Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.');
572 }
573 var /** @type {?} */ componentFactory;
574 if (componentOrFactory instanceof ComponentFactory) {
575 componentFactory = componentOrFactory;
576 }
577 else {
578 componentFactory = this._componentFactoryResolver.resolveComponentFactory(componentOrFactory);
579 }
580 this._rootComponentTypes.push(componentFactory.componentType);
581 var /** @type {?} */ compRef = componentFactory.create(this._injector, [], componentFactory.selector);
582 compRef.onDestroy(function () { _this._unloadComponent(compRef); });
583 var /** @type {?} */ testability = compRef.injector.get(Testability, null);
584 if (testability) {
585 compRef.injector.get(TestabilityRegistry)
586 .registerApplication(compRef.location.nativeElement, testability);
587 }
588 this._loadComponent(compRef);
589 if (isDevMode()) {
590 this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode.");
591 }
592 return compRef;
593 };
594 /**
595 * @param {?} componentRef
596 * @return {?}
597 */
598 ApplicationRef_.prototype._loadComponent = function (componentRef) {
599 this.attachView(componentRef.hostView);
600 this.tick();
601 this._rootComponents.push(componentRef);
602 // Get the listeners lazily to prevent DI cycles.
603 var /** @type {?} */ listeners = (this._injector.get(APP_BOOTSTRAP_LISTENER, [])
604 .concat(this._bootstrapListeners));
605 listeners.forEach(function (listener) { return listener(componentRef); });
606 };
607 /**
608 * @param {?} componentRef
609 * @return {?}
610 */
611 ApplicationRef_.prototype._unloadComponent = function (componentRef) {
612 this.detachView(componentRef.hostView);
613 ListWrapper.remove(this._rootComponents, componentRef);
614 };
615 /**
616 * @return {?}
617 */
618 ApplicationRef_.prototype.tick = function () {
619 if (this._runningTick) {
620 throw new Error('ApplicationRef.tick is called recursively');
621 }
622 var /** @type {?} */ scope = ApplicationRef_._tickScope();
623 try {
624 this._runningTick = true;
625 this._views.forEach(function (view) { return view.ref.detectChanges(); });
626 if (this._enforceNoNewChanges) {
627 this._views.forEach(function (view) { return view.ref.checkNoChanges(); });
628 }
629 }
630 finally {
631 this._runningTick = false;
632 wtfLeave(scope);
633 }
634 };
635 /**
636 * @return {?}
637 */
638 ApplicationRef_.prototype.ngOnDestroy = function () {
639 // TODO(alxhub): Dispose of the NgZone.
640 this._views.slice().forEach(function (view) { return view.destroy(); });
641 };
642 Object.defineProperty(ApplicationRef_.prototype, "viewCount", {
643 /**
644 * @return {?}
645 */
646 get: function () { return this._views.length; },
647 enumerable: true,
648 configurable: true
649 });
650 Object.defineProperty(ApplicationRef_.prototype, "componentTypes", {
651 /**
652 * @return {?}
653 */
654 get: function () { return this._rootComponentTypes; },
655 enumerable: true,
656 configurable: true
657 });
658 Object.defineProperty(ApplicationRef_.prototype, "components", {
659 /**
660 * @return {?}
661 */
662 get: function () { return this._rootComponents; },
663 enumerable: true,
664 configurable: true
665 });
666 /** @internal */
667 ApplicationRef_._tickScope = wtfCreateScope('ApplicationRef#tick()');
668 ApplicationRef_.decorators = [
669 { type: Injectable },
670 ];
671 /** @nocollapse */
672 ApplicationRef_.ctorParameters = function () { return [
673 { type: NgZone, },
674 { type: Console, },
675 { type: Injector, },
676 { type: ErrorHandler, },
677 { type: ComponentFactoryResolver, },
678 { type: ApplicationInitStatus, },
679 { type: TestabilityRegistry, decorators: [{ type: Optional },] },
680 { type: Testability, decorators: [{ type: Optional },] },
681 ]; };
682 return ApplicationRef_;
683}(ApplicationRef));
684function ApplicationRef__tsickle_Closure_declarations() {
685 /**
686 * \@internal
687 * @type {?}
688 */
689 ApplicationRef_._tickScope;
690 /** @type {?} */
691 ApplicationRef_.decorators;
692 /**
693 * @nocollapse
694 * @type {?}
695 */
696 ApplicationRef_.ctorParameters;
697 /** @type {?} */
698 ApplicationRef_.prototype._bootstrapListeners;
699 /** @type {?} */
700 ApplicationRef_.prototype._rootComponents;
701 /** @type {?} */
702 ApplicationRef_.prototype._rootComponentTypes;
703 /** @type {?} */
704 ApplicationRef_.prototype._views;
705 /** @type {?} */
706 ApplicationRef_.prototype._runningTick;
707 /** @type {?} */
708 ApplicationRef_.prototype._enforceNoNewChanges;
709 /** @type {?} */
710 ApplicationRef_.prototype._zone;
711 /** @type {?} */
712 ApplicationRef_.prototype._console;
713 /** @type {?} */
714 ApplicationRef_.prototype._injector;
715 /** @type {?} */
716 ApplicationRef_.prototype._exceptionHandler;
717 /** @type {?} */
718 ApplicationRef_.prototype._componentFactoryResolver;
719 /** @type {?} */
720 ApplicationRef_.prototype._initStatus;
721 /** @type {?} */
722 ApplicationRef_.prototype._testabilityRegistry;
723 /** @type {?} */
724 ApplicationRef_.prototype._testability;
725}
726//# sourceMappingURL=application_ref.js.map
\No newline at end of file