UNPKG

@omostan/ngx-idle

Version:

A module for responding to idle users in Angular applications. this is a forked version of the original @ng-Idle

118 lines 12.4 kB
import { EventEmitter, Injectable } from '@angular/core'; import { HttpRequest } from '@angular/common/http'; import { KeepaliveSvc } from '@ng-idle/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; /** * An example of an injectable service. */ export class Keepalive extends KeepaliveSvc { /* * Initializes a new instance of Keepalive * @param http - The HTTP service. */ constructor(http, zone) { super(); this.http = http; this.zone = zone; this.pingInterval = 10 * 60; /* * An event emitted when the service is pinging. */ this.onPing = new EventEmitter(); /* * An event emitted when the service has pinged an HTTP endpoint and received a response. */ this.onPingResponse = new EventEmitter(); } /* * Sets the string or Request that should be used when pinging. * @param url - The URL or Request object to use when pinging. * @return The current Request used when pinging. */ request(url) { if (typeof url === 'string') { this.pingRequest = new HttpRequest('GET', url); } else if (url instanceof HttpRequest) { this.pingRequest = url; } else if (url === null) { this.pingRequest = null; } return this.pingRequest; } /* * Sets the interval (in seconds) at which the ping operation will occur when start() is called. * @param seconds - The ping interval in seconds. * @return The current interval value. */ interval(seconds) { if (!isNaN(seconds) && seconds > 0) { this.pingInterval = seconds; } else if (!isNaN(seconds) && seconds <= 0) { throw new Error('Interval value must be greater than zero.'); } return this.pingInterval; } /* * Immediately performs the ping operation. If a request has been set, an HTTP * request will be made and the response will be emitted via the * onPingResponse event. */ ping() { this.onPing.emit(null); if (this.pingRequest) { this.http.request(this.pingRequest).subscribe((response) => { this.onPingResponse.emit(response); }, (error) => { this.onPingResponse.emit(error); }); } } /* * Starts pinging on an interval. */ start() { this.stop(); this.zone.runOutsideAngular(() => { this.pingHandle = setInterval(() => { this.zone.run(() => { this.ping(); }); }, this.pingInterval * 1000); }); } /* * Stops pinging on an interval. */ stop() { if (this.hasPingHandle()) { clearInterval(this.pingHandle); this.pingHandle = null; } } /* * Performs any cleanup tasks when Angular destroys the instance. */ ngOnDestroy() { this.stop(); } /* * Returns whether or not the service will ping automatically at the specified interval. * @return True if the service will ping at the specified interval; otherwise, false. */ isRunning() { return this.hasPingHandle(); } hasPingHandle() { return this.pingHandle !== null && typeof this.pingHandle !== 'undefined'; } } Keepalive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: Keepalive, deps: [{ token: i1.HttpClient }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); Keepalive.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: Keepalive }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: Keepalive, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.NgZone }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VlcGFsaXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMva2VlcGFsaXZlL3NyYy9saWIva2VlcGFsaXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQWMsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUU3Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxTQUFVLFNBQVEsWUFBWTtJQWlCekM7OztPQUdHO0lBQ0gsWUFBb0IsSUFBZ0IsRUFBVSxJQUFZO1FBQ3hELEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVE7UUFuQmxELGlCQUFZLEdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUd2Qzs7V0FFRztRQUNJLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0RDs7V0FFRztRQUNJLG1CQUFjLEdBQW9DLElBQUksWUFBWSxFQUV0RSxDQUFDO0lBUUosQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUksR0FBNkI7UUFDdEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbkQ7YUFBTSxJQUFJLEdBQUcsWUFBWSxXQUFXLEVBQUU7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7U0FDeEI7YUFBTSxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsT0FBZ0I7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1NBQzdCO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUM5RDtRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUk7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FDM0MsQ0FBQyxRQUEyQixFQUFFLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsRUFDRCxDQUFDLEtBQXdCLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUNGLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFWixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDakIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNkLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDeEIsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsQ0FBQztJQUM1RSxDQUFDOztzR0F0SFUsU0FBUzswR0FBVCxTQUFTOzJGQUFULFNBQVM7a0JBRHJCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIE5nWm9uZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEtlZXBhbGl2ZVN2YyB9IGZyb20gJ0BuZy1pZGxlL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIEFuIGV4YW1wbGUgb2YgYW4gaW5qZWN0YWJsZSBzZXJ2aWNlLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgS2VlcGFsaXZlIGV4dGVuZHMgS2VlcGFsaXZlU3ZjIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHBpbmdSZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+O1xyXG4gIHByaXZhdGUgcGluZ0ludGVydmFsOiBudW1iZXIgPSAxMCAqIDYwO1xyXG4gIHByaXZhdGUgcGluZ0hhbmRsZTogYW55O1xyXG5cclxuICAvKlxyXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VydmljZSBpcyBwaW5naW5nLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblBpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKlxyXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VydmljZSBoYXMgcGluZ2VkIGFuIEhUVFAgZW5kcG9pbnQgYW5kIHJlY2VpdmVkIGEgcmVzcG9uc2UuXHJcbiAgICovXHJcbiAgcHVibGljIG9uUGluZ1Jlc3BvbnNlOiBFdmVudEVtaXR0ZXI8SHR0cFJlc3BvbnNlPGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcclxuICAgIEh0dHBSZXNwb25zZTxhbnk+XHJcbiAgPigpO1xyXG5cclxuICAvKlxyXG4gICAqIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIEtlZXBhbGl2ZVxyXG4gICAqIEBwYXJhbSBodHRwIC0gVGhlIEhUVFAgc2VydmljZS5cclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgem9uZTogTmdab25lKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBTZXRzIHRoZSBzdHJpbmcgb3IgUmVxdWVzdCB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gcGluZ2luZy5cclxuICAgKiBAcGFyYW0gdXJsIC0gVGhlIFVSTCBvciBSZXF1ZXN0IG9iamVjdCB0byB1c2Ugd2hlbiBwaW5naW5nLlxyXG4gICAqIEByZXR1cm4gVGhlIGN1cnJlbnQgUmVxdWVzdCB1c2VkIHdoZW4gcGluZ2luZy5cclxuICAgKi9cclxuICByZXF1ZXN0PFQ+KHVybD86IHN0cmluZyB8IEh0dHBSZXF1ZXN0PFQ+KTogSHR0cFJlcXVlc3Q8VD4ge1xyXG4gICAgaWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMucGluZ1JlcXVlc3QgPSBuZXcgSHR0cFJlcXVlc3Q8VD4oJ0dFVCcsIHVybCk7XHJcbiAgICB9IGVsc2UgaWYgKHVybCBpbnN0YW5jZW9mIEh0dHBSZXF1ZXN0KSB7XHJcbiAgICAgIHRoaXMucGluZ1JlcXVlc3QgPSB1cmw7XHJcbiAgICB9IGVsc2UgaWYgKHVybCA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnBpbmdSZXF1ZXN0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5waW5nUmVxdWVzdDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogU2V0cyB0aGUgaW50ZXJ2YWwgKGluIHNlY29uZHMpIGF0IHdoaWNoIHRoZSBwaW5nIG9wZXJhdGlvbiB3aWxsIG9jY3VyIHdoZW4gc3RhcnQoKSBpcyBjYWxsZWQuXHJcbiAgICogQHBhcmFtIHNlY29uZHMgLSBUaGUgcGluZyBpbnRlcnZhbCBpbiBzZWNvbmRzLlxyXG4gICAqIEByZXR1cm4gVGhlIGN1cnJlbnQgaW50ZXJ2YWwgdmFsdWUuXHJcbiAgICovXHJcbiAgaW50ZXJ2YWwoc2Vjb25kcz86IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBpZiAoIWlzTmFOKHNlY29uZHMpICYmIHNlY29uZHMgPiAwKSB7XHJcbiAgICAgIHRoaXMucGluZ0ludGVydmFsID0gc2Vjb25kcztcclxuICAgIH0gZWxzZSBpZiAoIWlzTmFOKHNlY29uZHMpICYmIHNlY29uZHMgPD0gMCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVydmFsIHZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucGluZ0ludGVydmFsO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBJbW1lZGlhdGVseSBwZXJmb3JtcyB0aGUgcGluZyBvcGVyYXRpb24uIElmIGEgcmVxdWVzdCBoYXMgYmVlbiBzZXQsIGFuIEhUVFBcclxuICAgKiByZXF1ZXN0IHdpbGwgYmUgbWFkZSBhbmQgdGhlIHJlc3BvbnNlIHdpbGwgYmUgZW1pdHRlZCB2aWEgdGhlXHJcbiAgICogb25QaW5nUmVzcG9uc2UgZXZlbnQuXHJcbiAgICovXHJcbiAgcGluZygpOiB2b2lkIHtcclxuICAgIHRoaXMub25QaW5nLmVtaXQobnVsbCk7XHJcbiAgICBpZiAodGhpcy5waW5nUmVxdWVzdCkge1xyXG4gICAgICB0aGlzLmh0dHAucmVxdWVzdCh0aGlzLnBpbmdSZXF1ZXN0KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vblBpbmdSZXNwb25zZS5lbWl0KHJlc3BvbnNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICAgIHRoaXMub25QaW5nUmVzcG9uc2UuZW1pdChlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBTdGFydHMgcGluZ2luZyBvbiBhbiBpbnRlcnZhbC5cclxuICAgKi9cclxuICBzdGFydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcCgpO1xyXG5cclxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIHRoaXMucGluZ0hhbmRsZSA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGluZygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCB0aGlzLnBpbmdJbnRlcnZhbCAqIDEwMDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIFN0b3BzIHBpbmdpbmcgb24gYW4gaW50ZXJ2YWwuXHJcbiAgICovXHJcbiAgc3RvcCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhhc1BpbmdIYW5kbGUoKSkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMucGluZ0hhbmRsZSk7XHJcbiAgICAgIHRoaXMucGluZ0hhbmRsZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIFBlcmZvcm1zIGFueSBjbGVhbnVwIHRhc2tzIHdoZW4gQW5ndWxhciBkZXN0cm95cyB0aGUgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3AoKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc2VydmljZSB3aWxsIHBpbmcgYXV0b21hdGljYWxseSBhdCB0aGUgc3BlY2lmaWVkIGludGVydmFsLlxyXG4gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgc2VydmljZSB3aWxsIHBpbmcgYXQgdGhlIHNwZWNpZmllZCBpbnRlcnZhbDsgb3RoZXJ3aXNlLCBmYWxzZS5cclxuICAgKi9cclxuICBpc1J1bm5pbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5oYXNQaW5nSGFuZGxlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1BpbmdIYW5kbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5waW5nSGFuZGxlICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLnBpbmdIYW5kbGUgIT09ICd1bmRlZmluZWQnO1xyXG4gIH1cclxufVxyXG4iXX0=