{"version":3,"file":"ng-idle-keepalive.mjs","sources":["../../../projects/keepalive/src/lib/keepalive.ts","../../../projects/keepalive/src/lib/module.ts","../../../projects/keepalive/src/public-api.ts","../../../projects/keepalive/src/ng-idle-keepalive.ts"],"sourcesContent":["import { EventEmitter, Injectable, NgZone, OnDestroy } from '@angular/core';\r\nimport { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { KeepaliveSvc } from '@ng-idle/core';\r\n\r\n/**\r\n * An example of an injectable service.\r\n */\r\n@Injectable()\r\nexport class Keepalive extends KeepaliveSvc implements OnDestroy {\r\n  private pingRequest: HttpRequest<any>;\r\n  private pingInterval: number = 10 * 60;\r\n  private pingHandle: any;\r\n\r\n  /*\r\n   * An event emitted when the service is pinging.\r\n   */\r\n  public onPing: EventEmitter<any> = new EventEmitter();\r\n\r\n  /*\r\n   * An event emitted when the service has pinged an HTTP endpoint and received a response.\r\n   */\r\n  public onPingResponse: EventEmitter<HttpResponse<any>> = new EventEmitter<\r\n    HttpResponse<any>\r\n  >();\r\n\r\n  /*\r\n   * Initializes a new instance of Keepalive\r\n   * @param http - The HTTP service.\r\n   */\r\n  constructor(private http: HttpClient, private zone: NgZone) {\r\n    super();\r\n  }\r\n\r\n  /*\r\n   * Sets the string or Request that should be used when pinging.\r\n   * @param url - The URL or Request object to use when pinging.\r\n   * @return The current Request used when pinging.\r\n   */\r\n  request<T>(url?: string | HttpRequest<T>): HttpRequest<T> {\r\n    if (typeof url === 'string') {\r\n      this.pingRequest = new HttpRequest<T>('GET', url);\r\n    } else if (url instanceof HttpRequest) {\r\n      this.pingRequest = url;\r\n    } else if (url === null) {\r\n      this.pingRequest = null;\r\n    }\r\n\r\n    return this.pingRequest;\r\n  }\r\n\r\n  /*\r\n   * Sets the interval (in seconds) at which the ping operation will occur when start() is called.\r\n   * @param seconds - The ping interval in seconds.\r\n   * @return The current interval value.\r\n   */\r\n  interval(seconds?: number): number {\r\n    if (!isNaN(seconds) && seconds > 0) {\r\n      this.pingInterval = seconds;\r\n    } else if (!isNaN(seconds) && seconds <= 0) {\r\n      throw new Error('Interval value must be greater than zero.');\r\n    }\r\n\r\n    return this.pingInterval;\r\n  }\r\n\r\n  /*\r\n   * Immediately performs the ping operation. If a request has been set, an HTTP\r\n   * request will be made and the response will be emitted via the\r\n   * onPingResponse event.\r\n   */\r\n  ping(): void {\r\n    this.onPing.emit(null);\r\n    if (this.pingRequest) {\r\n      this.http.request(this.pingRequest).subscribe(\r\n        (response: HttpResponse<any>) => {\r\n          this.onPingResponse.emit(response);\r\n        },\r\n        (error: HttpResponse<any>) => {\r\n          this.onPingResponse.emit(error);\r\n        }\r\n      );\r\n    }\r\n  }\r\n\r\n  /*\r\n   * Starts pinging on an interval.\r\n   */\r\n  start(): void {\r\n    this.stop();\r\n\r\n    this.zone.runOutsideAngular(() => {\r\n      this.pingHandle = setInterval(() => {\r\n        this.zone.run(() => {\r\n          this.ping();\r\n        });\r\n      }, this.pingInterval * 1000);\r\n    });\r\n  }\r\n\r\n  /*\r\n   * Stops pinging on an interval.\r\n   */\r\n  stop(): void {\r\n    if (this.hasPingHandle()) {\r\n      clearInterval(this.pingHandle);\r\n      this.pingHandle = null;\r\n    }\r\n  }\r\n\r\n  /*\r\n   * Performs any cleanup tasks when Angular destroys the instance.\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.stop();\r\n  }\r\n\r\n  /*\r\n   * Returns whether or not the service will ping automatically at the specified interval.\r\n   * @return True if the service will ping at the specified interval; otherwise, false.\r\n   */\r\n  isRunning(): boolean {\r\n    return this.hasPingHandle();\r\n  }\r\n\r\n  private hasPingHandle(): boolean {\r\n    return this.pingHandle !== null && typeof this.pingHandle !== 'undefined';\r\n  }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { KeepaliveSvc, NgIdleModule } from '@ng-idle/core';\r\n\r\nimport { Keepalive } from './keepalive';\r\n\r\n@NgModule({ imports: [NgIdleModule.forRoot()] })\r\nexport class NgIdleKeepaliveModule {\r\n  static forRoot(): ModuleWithProviders<NgIdleKeepaliveModule> {\r\n    return {\r\n      ngModule: NgIdleKeepaliveModule,\r\n      providers: [Keepalive, { provide: KeepaliveSvc, useExisting: Keepalive }]\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of keepalive\r\n */\r\n\r\nexport * from './lib/keepalive';\r\nexport * from './lib/module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}