UNPKG

@angular/fire

Version:

The official library for Firebase and Angular

397 lines (388 loc) 15 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('@angular/fire'), require('@angular/common')) : typeof define === 'function' && define.amd ? define('@angular/fire/performance', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', '@angular/fire', '@angular/common'], factory) : (global = global || self, factory((global.angular = global.angular || {}, global.angular.fire = global.angular.fire || {}, global.angular.fire.performance = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.angular.fire, global.ng.common)); }(this, (function (exports, i0, rxjs, operators, i1, common) { 'use strict'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ // SEMVER @ v6, drop and move core ng metrics to a service /** @type {?} */ var AUTOMATICALLY_TRACE_CORE_NG_METRICS = new i0.InjectionToken('angularfire2.performance.auto_trace'); /** @type {?} */ var INSTRUMENTATION_ENABLED = new i0.InjectionToken('angularfire2.performance.instrumentationEnabled'); /** @type {?} */ var DATA_COLLECTION_ENABLED = new i0.InjectionToken('angularfire2.performance.dataCollectionEnabled'); // WARNING: interface has both a type and a value, skipping emit var AngularFirePerformance = /** @class */ (function () { /** * @param {?} app * @param {?} instrumentationEnabled * @param {?} dataCollectionEnabled * @param {?} zone * @param {?} platformId */ function AngularFirePerformance(app, instrumentationEnabled, dataCollectionEnabled, zone, // tslint:disable-next-line:ban-types platformId) { this.zone = zone; this.performance = rxjs.of(undefined).pipe(operators.switchMap(( /** * @return {?} */function () { return common.isPlatformBrowser(platformId) ? zone.runOutsideAngular(( /** * @return {?} */function () { return import('firebase/performance'); })) : rxjs.EMPTY; })), operators.map(( /** * @return {?} */function () { return zone.runOutsideAngular(( /** * @return {?} */function () { return app.performance(); })); })), operators.tap(( /** * @param {?} performance * @return {?} */function (/** * @param {?} performance * @return {?} */ performance) { if (instrumentationEnabled !== true) { performance.instrumentationEnabled = false; } if (dataCollectionEnabled !== true) { performance.dataCollectionEnabled = false; } })), operators.shareReplay({ bufferSize: 1, refCount: false })); return i1.ɵlazySDKProxy(this, this.performance, zone); } return AngularFirePerformance; }()); AngularFirePerformance.decorators = [ { type: i0.Injectable, args: [{ providedIn: 'any' },] } ]; /** @nocollapse */ AngularFirePerformance.ctorParameters = function () { return [ { type: i1.FirebaseApp }, { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [INSTRUMENTATION_ENABLED,] }] }, { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [DATA_COLLECTION_ENABLED,] }] }, { type: i0.NgZone }, { type: Object, decorators: [{ type: i0.Inject, args: [i0.PLATFORM_ID,] }] } ]; }; /** @nocollapse */ AngularFirePerformance.ɵprov = i0.ɵɵdefineInjectable({ factory: function AngularFirePerformance_Factory() { return new AngularFirePerformance(i0.ɵɵinject(i1.FirebaseApp), i0.ɵɵinject(INSTRUMENTATION_ENABLED, 8), i0.ɵɵinject(DATA_COLLECTION_ENABLED, 8), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.PLATFORM_ID)); }, token: AngularFirePerformance, providedIn: "any" }); if (false) { /** * @type {?} * @private */ AngularFirePerformance.prototype.performance; /** * @type {?} * @private */ AngularFirePerformance.prototype.zone; } /** @type {?} */ var trace$ = ( /** * @param {?} traceId * @return {?} */function (traceId) { if (typeof window !== 'undefined' && window.performance) { /** @type {?} */ var entries = window.performance.getEntriesByName(traceId, 'measure') || []; /** @type {?} */ var startMarkName_1 = "_" + traceId + "Start[" + entries.length + "]"; /** @type {?} */ var endMarkName_1 = "_" + traceId + "End[" + entries.length + "]"; return new rxjs.Observable(( /** * @param {?} emitter * @return {?} */function (/** * @param {?} emitter * @return {?} */ emitter) { window.performance.mark(startMarkName_1); emitter.next(); return { unsubscribe: ( /** * @return {?} */function () { window.performance.mark(endMarkName_1); window.performance.measure(traceId, startMarkName_1, endMarkName_1); }) }; })); } else { return rxjs.EMPTY; } }); var ɵ0 = trace$; /** @type {?} */ var traceUntil = ( /** * @template T * @param {?} name * @param {?} test * @param {?=} options * @return {?} */function (name, test, options) { return ( /** * @param {?} source$ * @return {?} */function (source$) { return new rxjs.Observable(( /** * @param {?} subscriber * @return {?} */function (/** * @param {?} subscriber * @return {?} */ subscriber) { /** @type {?} */ var traceSubscription = trace$(name).subscribe(); return source$.pipe(operators.tap(( /** * @param {?} a * @return {?} */function (/** * @param {?} a * @return {?} */ a) { return test(a) && traceSubscription.unsubscribe(); }), ( /** * @return {?} */function () { }), ( /** * @return {?} */function () { return options && options.orComplete && traceSubscription.unsubscribe(); }))).subscribe(subscriber); })); }); }); /** @type {?} */ var traceWhile = ( /** * @template T * @param {?} name * @param {?} test * @param {?=} options * @return {?} */function (name, test, options) { return ( /** * @param {?} source$ * @return {?} */function (source$) { return new rxjs.Observable(( /** * @param {?} subscriber * @return {?} */function (/** * @param {?} subscriber * @return {?} */ subscriber) { /** @type {?} */ var traceSubscription; return source$.pipe(operators.tap(( /** * @param {?} a * @return {?} */function (/** * @param {?} a * @return {?} */ a) { if (test(a)) { traceSubscription = traceSubscription || trace$(name).subscribe(); } else { if (traceSubscription) { traceSubscription.unsubscribe(); } traceSubscription = undefined; } }), ( /** * @return {?} */function () { }), ( /** * @return {?} */function () { return options && options.orComplete && traceSubscription && traceSubscription.unsubscribe(); }))).subscribe(subscriber); })); }); }); /** @type {?} */ var traceUntilComplete = ( /** * @template T * @param {?} name * @return {?} */function (name) { return ( /** * @param {?} source$ * @return {?} */function (source$) { return new rxjs.Observable(( /** * @param {?} subscriber * @return {?} */function (/** * @param {?} subscriber * @return {?} */ subscriber) { /** @type {?} */ var traceSubscription = trace$(name).subscribe(); return source$.pipe(operators.tap(( /** * @return {?} */function () { }), ( /** * @return {?} */function () { }), ( /** * @return {?} */function () { return traceSubscription.unsubscribe(); }))).subscribe(subscriber); })); }); }); /** @type {?} */ var traceUntilFirst = ( /** * @template T * @param {?} name * @return {?} */function (name) { return ( /** * @param {?} source$ * @return {?} */function (source$) { return new rxjs.Observable(( /** * @param {?} subscriber * @return {?} */function (/** * @param {?} subscriber * @return {?} */ subscriber) { /** @type {?} */ var traceSubscription = trace$(name).subscribe(); return source$.pipe(operators.tap(( /** * @return {?} */function () { return traceSubscription.unsubscribe(); }), ( /** * @return {?} */function () { }), ( /** * @return {?} */function () { }))).subscribe(subscriber); })); }); }); /** @type {?} */ var trace = ( /** * @template T * @param {?} name * @return {?} */function (name) { return ( /** * @param {?} source$ * @return {?} */function (source$) { return new rxjs.Observable(( /** * @param {?} subscriber * @return {?} */function (/** * @param {?} subscriber * @return {?} */ subscriber) { /** @type {?} */ var traceSubscription = trace$(name).subscribe(); return source$.pipe(operators.tap(( /** * @return {?} */function () { return traceSubscription.unsubscribe(); }), ( /** * @return {?} */function () { }), ( /** * @return {?} */function () { return traceSubscription.unsubscribe(); }))).subscribe(subscriber); })); }); }); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var IS_STABLE_START_MARK = '_isStableStart'; /** @type {?} */ var IS_STABLE_END_MARK = '_isStableEnd'; /** * @return {?} */ function markStarts() { if (typeof (window) !== 'undefined' && window.performance) { window.performance.mark(IS_STABLE_START_MARK); return true; } else { return false; } } /** @type {?} */ var started = markStarts(); var PerformanceMonitoringService = /** @class */ (function () { /** * @param {?} appRef */ function PerformanceMonitoringService(appRef) { if (started) { this.disposable = appRef.isStable.pipe(operators.first(( /** * @param {?} it * @return {?} */function (/** * @param {?} it * @return {?} */ it) { return it; })), operators.tap(( /** * @return {?} */function () { window.performance.mark(IS_STABLE_END_MARK); window.performance.measure('isStable', IS_STABLE_START_MARK, IS_STABLE_END_MARK); }))).subscribe(); } } /** * @return {?} */ PerformanceMonitoringService.prototype.ngOnDestroy = function () { if (this.disposable) { this.disposable.unsubscribe(); } }; return PerformanceMonitoringService; }()); PerformanceMonitoringService.decorators = [ { type: i0.Injectable, args: [{ providedIn: 'any' },] } ]; /** @nocollapse */ PerformanceMonitoringService.ctorParameters = function () { return [ { type: i0.ApplicationRef } ]; }; /** @nocollapse */ PerformanceMonitoringService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PerformanceMonitoringService_Factory() { return new PerformanceMonitoringService(i0.ɵɵinject(i0.ApplicationRef)); }, token: PerformanceMonitoringService, providedIn: "any" }); if (false) { /** * @type {?} * @private */ PerformanceMonitoringService.prototype.disposable; } /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var AngularFirePerformanceModule = /** @class */ (function () { /** * @param {?} perf * @param {?} _ */ function AngularFirePerformanceModule(perf, _) { // call anything here to get perf loading // tslint:disable-next-line:no-unused-expression perf.dataCollectionEnabled; } return AngularFirePerformanceModule; }()); AngularFirePerformanceModule.decorators = [ { type: i0.NgModule, args: [{ providers: [AngularFirePerformance] },] } ]; /** @nocollapse */ AngularFirePerformanceModule.ctorParameters = function () { return [ { type: AngularFirePerformance }, { type: PerformanceMonitoringService, decorators: [{ type: i0.Optional }] } ]; }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ exports.AUTOMATICALLY_TRACE_CORE_NG_METRICS = AUTOMATICALLY_TRACE_CORE_NG_METRICS; exports.AngularFirePerformance = AngularFirePerformance; exports.AngularFirePerformanceModule = AngularFirePerformanceModule; exports.DATA_COLLECTION_ENABLED = DATA_COLLECTION_ENABLED; exports.INSTRUMENTATION_ENABLED = INSTRUMENTATION_ENABLED; exports.PerformanceMonitoringService = PerformanceMonitoringService; exports.trace = trace; exports.traceUntil = traceUntil; exports.traceUntilComplete = traceUntilComplete; exports.traceUntilFirst = traceUntilFirst; exports.traceWhile = traceWhile; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=angular-fire-performance.umd.js.map