UNPKG

netsignal

Version:

Instant network detection for React Native and Web - Turbo Module enabled

56 lines (54 loc) 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NativeNetSignal = void 0; var _reactNative = require("react-native"); var _base = require("./base"); /** * Native implementation for iOS/Android * Tree-shakable - no web dependencies */ class NativeNetSignal extends _base.BaseNetSignal { native = _reactNative.NativeModules.NetSignal || null; emitter = this.native ? new _reactNative.NativeEventEmitter(_reactNative.NativeModules.NetSignal) : null; listeners = new Map(); isConnected() { return this.native?.isConnected() ?? false; } getType() { return this.native?.getConnectionType() ?? 'unknown'; } async probe(url, timeoutMs = 5000) { if (!this.native) { return { reachable: false, responseTime: -1, error: 'Native module not available' }; } try { return await this.native.probe(url, timeoutMs); } catch (error) { return { reachable: false, responseTime: -1, error: error.message }; } } onChange(callback) { if (!this.emitter) { return () => {}; } const id = Math.random().toString(36); const subscription = this.emitter.addListener('connectionChange', callback); this.listeners.set(id, subscription); return () => { subscription.remove(); this.listeners.delete(id); }; } } exports.NativeNetSignal = NativeNetSignal; //# sourceMappingURL=native.js.map