ng-speed-test
Version:
Angular library for testing internet connection speed
44 lines • 5.09 kB
JavaScript
export class SpeedTestResultsModel {
constructor(fileSize) {
this.fileSize = fileSize;
this.duration = 0;
this.hasEnded = false;
this.startTime = null;
this.endTime = null;
this.speedBps = 0;
}
get speedKbps() {
return this.speedBps / 1024;
}
get speedMbps() {
return this.speedKbps / 1024;
}
_update() {
if (this.endTime !== null && this.startTime !== null) {
const milliseconds = this.endTime - this.startTime;
if (milliseconds !== 0) {
this.duration = milliseconds / 1000;
}
const bitsLoaded = this.fileSize * 8;
this.speedBps = bitsLoaded / this.duration;
}
}
end() {
if (!this.hasEnded) {
this.hasEnded = true;
this.endTime = Date.now();
this._update();
}
}
error() {
if (!this.hasEnded) {
this.hasEnded = true;
this.endTime = null;
this._update();
}
}
start() {
this.startTime = Date.now();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWQtdGVzdC1yZXN1bHRzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vZGVscy9zcGVlZC10ZXN0LXJlc3VsdHMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxPQUFPLHFCQUFxQjtJQU85QixZQUFvQixRQUFnQjtRQUFoQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBTjdCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxZQUFPLEdBQWtCLElBQUksQ0FBQztRQUM5QixhQUFRLEdBQVcsQ0FBQyxDQUFDO0lBRVcsQ0FBQztJQUV4QyxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFTyxPQUFPO1FBQ1gsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ25ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNuRCxJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3hDLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9DLENBQUM7SUFDTCxDQUFDO0lBRUQsR0FBRztRQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU3BlZWRUZXN0UmVzdWx0cyB7XHJcbiAgICBkdXJhdGlvbjogbnVtYmVyO1xyXG4gICAgaGFzRW5kZWQ6IGJvb2xlYW47XHJcbiAgICBzdGFydFRpbWU6IG51bWJlciB8IG51bGw7XHJcbiAgICBlbmRUaW1lOiBudW1iZXIgfCBudWxsO1xyXG4gICAgc3BlZWRCcHM6IG51bWJlcjtcclxuICAgIHNwZWVkS2JwczogbnVtYmVyO1xyXG4gICAgc3BlZWRNYnBzOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTcGVlZFRlc3RSZXN1bHRzTW9kZWwgaW1wbGVtZW50cyBTcGVlZFRlc3RSZXN1bHRzIHtcclxuICAgIHB1YmxpYyBkdXJhdGlvbjogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBoYXNFbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHN0YXJ0VGltZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwdWJsaWMgZW5kVGltZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwdWJsaWMgc3BlZWRCcHM6IG51bWJlciA9IDA7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlU2l6ZTogbnVtYmVyKSB7fVxyXG5cclxuICAgIGdldCBzcGVlZEticHMoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zcGVlZEJwcyAvIDEwMjQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNwZWVkTWJwcygpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNwZWVkS2JwcyAvIDEwMjQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdXBkYXRlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmVuZFRpbWUgIT09IG51bGwgJiYgdGhpcy5zdGFydFRpbWUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgY29uc3QgbWlsbGlzZWNvbmRzID0gdGhpcy5lbmRUaW1lIC0gdGhpcy5zdGFydFRpbWU7XHJcbiAgICAgICAgICAgIGlmIChtaWxsaXNlY29uZHMgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHVyYXRpb24gPSBtaWxsaXNlY29uZHMgLyAxMDAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGJpdHNMb2FkZWQgPSB0aGlzLmZpbGVTaXplICogODtcclxuICAgICAgICAgICAgdGhpcy5zcGVlZEJwcyA9IGJpdHNMb2FkZWQgLyB0aGlzLmR1cmF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbmQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0VuZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzRW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXJyb3IoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0VuZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzRW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==