@cause-911/core
Version:
Run `npm install @cause-911/core --save` to add this library to your project
121 lines • 8.48 kB
JavaScript
/**
* @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