UNPKG

@ashetm/ng-network

Version:

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

23 lines 5.85 kB
import { fromEvent, merge, of, timer } from "rxjs"; import { map, startWith, switchMap } from "rxjs/operators"; export const fromOfflineEvent = () => fromEvent(window, 'offline').pipe(map(() => void 0)); export const fromOnlineEvent = () => fromEvent(window, 'online').pipe(map(() => void 0)); export const fromNetworkEvents = () => merge(fromOfflineEvent().pipe(map(() => false)), fromOnlineEvent().pipe(map(() => true))); export const fromNetworkLastTimeConnected = () => { const interval = 100; return fromNetworkEvents().pipe(switchMap((network) => network ? of(undefined) : timer(0, interval)), map((milliseconds) => milliseconds === undefined ? undefined : milliseconds * interval), startWith(undefined)); }; export const fromNetworkStatus = () => { const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection; if (!connection) { return of(undefined); // Fallback when Network Information API is not supported } return fromEvent(connection, "change").pipe(startWith(connection), // Emit the initial state map(() => ({ effectiveType: connection.effectiveType || "unknown", downlink: connection.downlink || 0, rtt: connection.rtt || 0, saveData: connection.saveData || false, }))); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5yeGpzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0d29yay9zcmMvbGliL25ldHdvcmsucnhqcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTNELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUEyQixHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25ILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBMkIsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBOEIsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUNyRSxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDekMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN4QyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQXlDLEdBQUcsRUFBRTtJQUNyRixNQUFNLFFBQVEsR0FBVyxHQUFHLENBQUM7SUFFN0IsT0FBTyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FDN0IsU0FBUyxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFDN0UsR0FBRyxDQUFDLENBQUMsWUFBZ0MsRUFBRSxFQUFFLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEVBQzNHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FDckIsQ0FBQztBQUNKLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFnRCxHQUFHLEVBQUU7SUFDakYsTUFBTSxVQUFVLEdBQUksU0FBaUIsQ0FBQyxVQUFVLElBQUssU0FBaUIsQ0FBQyxhQUFhLElBQUssU0FBaUIsQ0FBQyxnQkFBZ0IsQ0FBQztJQUU1SCxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2YsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyx5REFBeUQ7S0FDaEY7SUFFRCxPQUFPLFNBQVMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUN6QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUseUJBQXlCO0lBQ2hELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsYUFBYSxFQUFFLFVBQVUsQ0FBQyxhQUFhLElBQUksU0FBUztRQUNwRCxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsSUFBSSxDQUFDO1FBQ2xDLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDeEIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRLElBQUksS0FBSztLQUN2QyxDQUFDLENBQUMsQ0FDSixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50LCBtZXJnZSwgb2YsIHRpbWVyIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgTmV0d29ya1N0YXR1cyB9IGZyb20gXCIuL25ldHdvcmsudHlwZVwiO1xuXG5leHBvcnQgY29uc3QgZnJvbU9mZmxpbmVFdmVudDogKCkgPT4gT2JzZXJ2YWJsZTx2b2lkPiA9ICgpID0+IGZyb21FdmVudCh3aW5kb3csICdvZmZsaW5lJykucGlwZShtYXAoKCkgPT4gdm9pZCAwKSk7XG5leHBvcnQgY29uc3QgZnJvbU9ubGluZUV2ZW50OiAoKSA9PiBPYnNlcnZhYmxlPHZvaWQ+ID0gKCkgPT4gZnJvbUV2ZW50KHdpbmRvdywgJ29ubGluZScpLnBpcGUobWFwKCgpID0+IHZvaWQgMCkpO1xuZXhwb3J0IGNvbnN0IGZyb21OZXR3b3JrRXZlbnRzOiAoKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gKCkgPT4gbWVyZ2UoXG4gIGZyb21PZmZsaW5lRXZlbnQoKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpLFxuICBmcm9tT25saW5lRXZlbnQoKS5waXBlKG1hcCgoKSA9PiB0cnVlKSksXG4pO1xuZXhwb3J0IGNvbnN0IGZyb21OZXR3b3JrTGFzdFRpbWVDb25uZWN0ZWQ6ICgpID0+IE9ic2VydmFibGU8bnVtYmVyIHwgdW5kZWZpbmVkPiA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJ2YWw6IG51bWJlciA9IDEwMDtcblxuICByZXR1cm4gZnJvbU5ldHdvcmtFdmVudHMoKS5waXBlKFxuICAgIHN3aXRjaE1hcCgobmV0d29yazogYm9vbGVhbikgPT4gbmV0d29yayA/IG9mKHVuZGVmaW5lZCkgOiB0aW1lcigwLCBpbnRlcnZhbCkpLFxuICAgIG1hcCgobWlsbGlzZWNvbmRzOiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG1pbGxpc2Vjb25kcyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogbWlsbGlzZWNvbmRzICogaW50ZXJ2YWwpLFxuICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICApO1xufVxuZXhwb3J0IGNvbnN0IGZyb21OZXR3b3JrU3RhdHVzOiAoKSA9PiBPYnNlcnZhYmxlPE5ldHdvcmtTdGF0dXMgfCB1bmRlZmluZWQ+ID0gKCkgPT4ge1xuICBjb25zdCBjb25uZWN0aW9uID0gKG5hdmlnYXRvciBhcyBhbnkpLmNvbm5lY3Rpb24gfHwgKG5hdmlnYXRvciBhcyBhbnkpLm1vekNvbm5lY3Rpb24gfHwgKG5hdmlnYXRvciBhcyBhbnkpLndlYmtpdENvbm5lY3Rpb247XG5cbiAgaWYgKCFjb25uZWN0aW9uKSB7XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7IC8vIEZhbGxiYWNrIHdoZW4gTmV0d29yayBJbmZvcm1hdGlvbiBBUEkgaXMgbm90IHN1cHBvcnRlZFxuICB9XG5cbiAgcmV0dXJuIGZyb21FdmVudChjb25uZWN0aW9uLCBcImNoYW5nZVwiKS5waXBlKFxuICAgIHN0YXJ0V2l0aChjb25uZWN0aW9uKSwgLy8gRW1pdCB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgIG1hcCgoKSA9PiAoe1xuICAgICAgZWZmZWN0aXZlVHlwZTogY29ubmVjdGlvbi5lZmZlY3RpdmVUeXBlIHx8IFwidW5rbm93blwiLFxuICAgICAgZG93bmxpbms6IGNvbm5lY3Rpb24uZG93bmxpbmsgfHwgMCxcbiAgICAgIHJ0dDogY29ubmVjdGlvbi5ydHQgfHwgMCxcbiAgICAgIHNhdmVEYXRhOiBjb25uZWN0aW9uLnNhdmVEYXRhIHx8IGZhbHNlLFxuICAgIH0pKVxuICApO1xufTtcbiJdfQ==