UNPKG

@cause-911/core

Version:

Run `npm install @cause-911/core --save` to add this library to your project

121 lines 8.48 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { EventEmitter, Injectable, Output } from '@angular/core'; import { Observable } from 'rxjs'; import { NetworkEstimates } from '../classes/network-estimates'; import * as i0 from "@angular/core"; var NetworkInformationService = /** @class */ (function () { function NetworkInformationService() { var _this = this; this.estimates = new NetworkEstimates(); this.statusChange = new EventEmitter(); window.addEventListener('online', (/** * @return {?} */ function () { return _this.onStatusChange(true); })); window.addEventListener('offline', (/** * @return {?} */ function () { return _this.onStatusChange(false); })); } /** * @return {?} */ NetworkInformationService.prototype.getConnectionSpeed = /** * @return {?} */ function () { var _this = this; return new Observable((/** * @param {?} observer * @return {?} */ function (observer) { if (navigator && 'connection' in navigator) { observer.next(navigator['connection']['downlink'] + " Mb/s"); observer.complete(); } else { _this.estimateDownlink(observer); } })); }; /** * @private * @param {?} observer * @return {?} */ NetworkInformationService.prototype.estimateDownlink = /** * @private * @param {?} observer * @return {?} */ function (observer) { var _this = this; /** @type {?} */ var startTime = (new Date()).getTime(); /** @type {?} */ var download = new Image(); download.onload = (/** * @return {?} */ function () { /** @type {?} */ var duration = ((new Date()).getTime() - startTime) / 1000; /** @type {?} */ var downloadSize = 104857600; /** @type {?} */ var bitsLoaded = downloadSize * 8; /** @type {?} */ var speedBps = (bitsLoaded / duration); observer.next(_this.estimates.estimate(speedBps)); observer.complete(); }); download.onerror = (/** * @param {?} error * @return {?} */ function (error) { observer.error(error); }); download.src = 'https://speed.hetzner.de/100MB.bin?_=' + startTime; }; /** * @private * @param {?} online * @return {?} */ NetworkInformationService.prototype.onStatusChange = /** * @private * @param {?} online * @return {?} */ function (online) { this.statusChange.emit(online); }; NetworkInformationService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ NetworkInformationService.ctorParameters = function () { return []; }; NetworkInformationService.propDecorators = { statusChange: [{ type: Output }] }; /** @nocollapse */ NetworkInformationService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function NetworkInformationService_Factory() { return new NetworkInformationService(); }, token: NetworkInformationService, providedIn: "root" }); return NetworkInformationService; }()); export { NetworkInformationService }; if (false) { /** * @type {?} * @private */ NetworkInformationService.prototype.estimates; /** @type {?} */ NetworkInformationService.prototype.statusChange; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1pbmZvcm1hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNhdXNlLTkxMS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9zZXJ2aWNlcy9uZXR3b3JrLWluZm9ybWF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOztBQUU5RDtJQVFFO1FBQUEsaUJBT0M7UUFYTyxjQUFTLEdBQXFCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUU1QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHakQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVE7OztRQUM1QixjQUFNLE9BQUEsS0FBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBekIsQ0FBeUIsRUFDbEMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTOzs7UUFDN0IsY0FBTSxPQUFBLEtBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQTFCLENBQTBCLEVBQ25DLENBQUM7SUFDSixDQUFDOzs7O0lBRU0sc0RBQWtCOzs7SUFBekI7UUFBQSxpQkFTQztRQVJDLE9BQU8sSUFBSSxVQUFVOzs7O1FBQUMsVUFBQSxRQUFRO1lBQzVCLElBQUksU0FBUyxJQUFJLFlBQVksSUFBSSxTQUFTLEVBQUU7Z0JBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFPLENBQUMsQ0FBQztnQkFDN0QsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNqQztRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7O0lBRU8sb0RBQWdCOzs7OztJQUF4QixVQUF5QixRQUFRO1FBQWpDLGlCQWlCQzs7WUFoQk8sU0FBUyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTs7WUFDbEMsUUFBUSxHQUFHLElBQUksS0FBSyxFQUFFO1FBRTVCLFFBQVEsQ0FBQyxNQUFNOzs7UUFBRzs7Z0JBQ1YsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSTs7Z0JBQ3RELFlBQVksR0FBRyxTQUFTOztnQkFDeEIsVUFBVSxHQUFHLFlBQVksR0FBRyxDQUFDOztnQkFDN0IsUUFBUSxHQUFHLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztZQUV4QyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDakQsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQSxDQUFDO1FBQ0YsUUFBUSxDQUFDLE9BQU87Ozs7UUFBRyxVQUFDLEtBQUs7WUFDdkIsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUEsQ0FBQztRQUNGLFFBQVEsQ0FBQyxHQUFHLEdBQUcsdUNBQXVDLEdBQUcsU0FBUyxDQUFDO0lBQ3JFLENBQUM7Ozs7OztJQUVPLGtEQUFjOzs7OztJQUF0QixVQUF1QixNQUFlO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7O2dCQWpERixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7OzsrQkFJRSxNQUFNOzs7b0NBVlQ7Q0FzREMsQUFsREQsSUFrREM7U0EvQ1kseUJBQXlCOzs7Ozs7SUFDcEMsOENBQTZEOztJQUU3RCxpREFBbUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge05ldHdvcmtFc3RpbWF0ZXN9IGZyb20gJy4uL2NsYXNzZXMvbmV0d29yay1lc3RpbWF0ZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZXR3b3JrSW5mb3JtYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlc3RpbWF0ZXM6IE5ldHdvcmtFc3RpbWF0ZXMgPSBuZXcgTmV0d29ya0VzdGltYXRlcygpO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc3RhdHVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLFxuICAgICAgICAoKSA9PiB0aGlzLm9uU3RhdHVzQ2hhbmdlKHRydWUpXG4gICAgKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb2ZmbGluZScsXG4gICAgICAgICgpID0+IHRoaXMub25TdGF0dXNDaGFuZ2UoZmFsc2UpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25uZWN0aW9uU3BlZWQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgaWYgKG5hdmlnYXRvciAmJiAnY29ubmVjdGlvbicgaW4gbmF2aWdhdG9yKSB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoYCR7bmF2aWdhdG9yWydjb25uZWN0aW9uJ11bJ2Rvd25saW5rJ119IE1iL3NgKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXN0aW1hdGVEb3dubGluayhvYnNlcnZlcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVzdGltYXRlRG93bmxpbmsob2JzZXJ2ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydFRpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRvd25sb2FkID0gbmV3IEltYWdlKCk7XG5cbiAgICBkb3dubG9hZC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9ICgobmV3IERhdGUoKSkuZ2V0VGltZSgpIC0gc3RhcnRUaW1lKSAvIDEwMDA7XG4gICAgICBjb25zdCBkb3dubG9hZFNpemUgPSAxMDQ4NTc2MDA7XG4gICAgICBjb25zdCBiaXRzTG9hZGVkID0gZG93bmxvYWRTaXplICogODtcbiAgICAgIGNvbnN0IHNwZWVkQnBzID0gKGJpdHNMb2FkZWQgLyBkdXJhdGlvbik7XG5cbiAgICAgIG9ic2VydmVyLm5leHQodGhpcy5lc3RpbWF0ZXMuZXN0aW1hdGUoc3BlZWRCcHMpKTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfTtcbiAgICBkb3dubG9hZC5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgfTtcbiAgICBkb3dubG9hZC5zcmMgPSAnaHR0cHM6Ly9zcGVlZC5oZXR6bmVyLmRlLzEwME1CLmJpbj9fPScgKyBzdGFydFRpbWU7XG4gIH1cblxuICBwcml2YXRlIG9uU3RhdHVzQ2hhbmdlKG9ubGluZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzQ2hhbmdlLmVtaXQob25saW5lKTtcbiAgfVxufVxuIl19