UNPKG

@ashetm/ng-network

Version:

``@ashetm/ng-network`` is a library that provide some utilities classes, like pipes.

1 lines 6.01 kB
{"version":3,"file":"ashetm-ng-network.mjs","sources":["../../../projects/network/src/lib/network.rxjs.ts","../../../projects/network/src/lib/network.directive.ts","../../../projects/network/src/lib/network.operators.ts","../../../projects/network/src/public-api.ts","../../../projects/network/src/ashetm-ng-network.ts"],"sourcesContent":["import { Observable, fromEvent, merge, of, timer } from \"rxjs\";\nimport { map, startWith, switchMap } from \"rxjs/operators\";\n\nimport { NetworkStatus } from \"./network.type\";\n\nexport const fromOfflineEvent: () => Observable<void> = () => fromEvent(window, 'offline').pipe(map(() => void 0));\nexport const fromOnlineEvent: () => Observable<void> = () => fromEvent(window, 'online').pipe(map(() => void 0));\nexport const fromNetworkEvents: () => Observable<boolean> = () => merge(\n fromOfflineEvent().pipe(map(() => false)),\n fromOnlineEvent().pipe(map(() => true)),\n);\nexport const fromNetworkLastTimeConnected: () => Observable<number | undefined> = () => {\n const interval: number = 100;\n\n return fromNetworkEvents().pipe(\n switchMap((network: boolean) => network ? of(undefined) : timer(0, interval)),\n map((milliseconds: number | undefined) => milliseconds === undefined ? undefined : milliseconds * interval),\n startWith(undefined),\n );\n}\nexport const fromNetworkStatus: () => Observable<NetworkStatus | undefined> = () => {\n const connection = (navigator as any).connection || (navigator as any).mozConnection || (navigator as any).webkitConnection;\n\n if (!connection) {\n return of(undefined); // Fallback when Network Information API is not supported\n }\n\n return fromEvent(connection, \"change\").pipe(\n startWith(connection), // Emit the initial state\n map(() => ({\n effectiveType: connection.effectiveType || \"unknown\",\n downlink: connection.downlink || 0,\n rtt: connection.rtt || 0,\n saveData: connection.saveData || false,\n }))\n );\n};\n","import { AfterViewInit, Directive, TemplateRef, ViewContainerRef, inject } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { fromNetworkEvents, fromNetworkLastTimeConnected } from \"./network.rxjs\";\n\n/**\n * @requires NetworkModule\n */\n@Directive({\n selector: 'ashetmNetwork',\n standalone: false\n})\nexport class NetworkDirective implements AfterViewInit {\n private readonly _templateRef: TemplateRef<{\n $implicit: Observable<boolean>,\n lastTimeConnected$: Observable<number | undefined>,\n }> = inject(TemplateRef);\n private readonly _viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n\n ngAfterViewInit(): void {\n this._viewContainerRef.createEmbeddedView(this._templateRef, {\n $implicit: fromNetworkEvents(),\n lastTimeConnected$: fromNetworkLastTimeConnected()\n });\n }\n}\n","import { MonoTypeOperatorFunction, Observable, timer } from \"rxjs\";\nimport { delayWhen, retryWhen } from \"rxjs/operators\";\n\nimport { fromNetworkEvents } from \"./network.rxjs\";\n\n/**\n * @experimental feature\n */\nexport function retryUntilOnline<T>(durationStep: number = 1000, timeIncreasing: boolean = false): MonoTypeOperatorFunction<T> {\n return (source$: Observable<T>): Observable<T> => source$.pipe(\n retryWhen((_: Observable<unknown>) => fromNetworkEvents().pipe(\n delayWhen((isOnline: boolean, index: number) => isOnline ? source$ : timer((timeIncreasing ? index : 1) * durationStep))\n ))\n );\n}\n","/*\n * Public API Surface of network\n */\n\nexport * from './lib/network.directive';\nexport * from './lib/network.operators';\nexport * from './lib/network.rxjs';\nexport * from './lib/network.type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}