UNPKG

ng-connection-monitor

Version:

A lightweight Angular service to detect real internet connection using a backend ping, not navigator.onLine.

1 lines 5.77 kB
{"version":3,"file":"ng-connection-monitor.mjs","sources":["../../../projects/ng-connection-monitor/src/environments/environment.ts","../../../projects/ng-connection-monitor/src/lib/ng-connection-monitor.service.ts","../../../projects/ng-connection-monitor/src/lib/ng-connection-monitor.component.ts","../../../projects/ng-connection-monitor/src/lib/ng-connection-monitor.module.ts","../../../projects/ng-connection-monitor/src/public-api.ts","../../../projects/ng-connection-monitor/src/ng-connection-monitor.ts"],"sourcesContent":["export const LIB_ENVIRONMENT = {\r\n pingUrl: 'https://my-ping-server.vercel.app/api/ping'\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, NgZone } from '@angular/core';\r\nimport { BehaviorSubject, catchError, distinctUntilChanged, Observable, of, switchMap, timer } from 'rxjs';\r\nimport { LIB_ENVIRONMENT } from '../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgConnectionMonitorService {\r\n private readonly onlineStatus$ = new BehaviorSubject<boolean>(true);\r\n private readonly pingInterval = 3000;\r\n private pingUrl = LIB_ENVIRONMENT.pingUrl;\r\n\r\n constructor(private http: HttpClient, private ngZone: NgZone) {\r\n this.monitorNetworkStatus()\r\n }\r\n\r\n get isOnline$(): Observable<boolean> {\r\n return this.onlineStatus$.asObservable();\r\n }\r\n\r\n private monitorNetworkStatus(): void {\r\n this.ngZone.runOutsideAngular(() => {\r\n timer(0, this.pingInterval)\r\n .pipe(\r\n switchMap(() => this.pingBackend()),\r\n distinctUntilChanged()\r\n )\r\n .subscribe((isOnline) => {\r\n this.ngZone.run(() => this.onlineStatus$.next(isOnline));\r\n });\r\n });\r\n }\r\n private pingBackend(): Observable<boolean> {\r\n return this.http.get(this.pingUrl, { observe: 'response' }).pipe(\r\n switchMap((response) => of(response.status === 200)),\r\n catchError(() => of(false))\r\n );\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-ng-connection-monitor',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n ng-connection-monitor works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class NgConnectionMonitorComponent {\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgConnectionMonitorService } from './ng-connection-monitor.service';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers:[NgConnectionMonitorService]\r\n})\r\nexport class NgConnectionMonitorModule { }\r\n","/*\r\n * Public API Surface of ng-connection-monitor\r\n */\r\n\r\nexport * from './lib/ng-connection-monitor.service';\r\nexport * from './lib/ng-connection-monitor.component';\r\nexport * from './lib/ng-connection-monitor.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}