munim-wifi 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/MunimWifi.podspec +31 -0
  3. package/README.md +591 -0
  4. package/android/CMakeLists.txt +32 -0
  5. package/android/build.gradle +148 -0
  6. package/android/fix-prefab.gradle +51 -0
  7. package/android/gradle.properties +5 -0
  8. package/android/src/main/AndroidManifest.xml +6 -0
  9. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  10. package/android/src/main/java/com/munimwifi/HybridMunimWifi.kt +283 -0
  11. package/android/src/main/java/com/munimwifi/MunimWifiPackage.kt +20 -0
  12. package/ios/Bridge.h +8 -0
  13. package/ios/HybridMunimWifi.swift +222 -0
  14. package/lib/commonjs/index.js +216 -0
  15. package/lib/commonjs/index.js.map +1 -0
  16. package/lib/commonjs/package.json +1 -0
  17. package/lib/commonjs/specs/munim-wifi.nitro.js +6 -0
  18. package/lib/commonjs/specs/munim-wifi.nitro.js.map +1 -0
  19. package/lib/module/index.js +198 -0
  20. package/lib/module/index.js.map +1 -0
  21. package/lib/module/specs/munim-wifi.nitro.js +4 -0
  22. package/lib/module/specs/munim-wifi.nitro.js.map +1 -0
  23. package/lib/typescript/src/index.d.ts +120 -0
  24. package/lib/typescript/src/index.d.ts.map +1 -0
  25. package/lib/typescript/src/specs/munim-wifi.nitro.d.ts +118 -0
  26. package/lib/typescript/src/specs/munim-wifi.nitro.d.ts.map +1 -0
  27. package/nitro.json +24 -0
  28. package/nitrogen/generated/.gitattributes +1 -0
  29. package/nitrogen/generated/android/MunimWifi+autolinking.cmake +85 -0
  30. package/nitrogen/generated/android/MunimWifi+autolinking.gradle +27 -0
  31. package/nitrogen/generated/android/MunimWifiOnLoad.cpp +44 -0
  32. package/nitrogen/generated/android/MunimWifiOnLoad.hpp +25 -0
  33. package/nitrogen/generated/android/c++/JChannelInfo.hpp +61 -0
  34. package/nitrogen/generated/android/c++/JHybridMunimWifiSpec.cpp +262 -0
  35. package/nitrogen/generated/android/c++/JHybridMunimWifiSpec.hpp +78 -0
  36. package/nitrogen/generated/android/c++/JLocation.hpp +61 -0
  37. package/nitrogen/generated/android/c++/JScanOptions.hpp +61 -0
  38. package/nitrogen/generated/android/c++/JVariant_NullType_ChannelInfo.cpp +26 -0
  39. package/nitrogen/generated/android/c++/JVariant_NullType_ChannelInfo.hpp +71 -0
  40. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  41. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  42. package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
  43. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
  44. package/nitrogen/generated/android/c++/JVariant_NullType_WifiNetwork.cpp +26 -0
  45. package/nitrogen/generated/android/c++/JVariant_NullType_WifiNetwork.hpp +73 -0
  46. package/nitrogen/generated/android/c++/JWifiFingerprint.hpp +89 -0
  47. package/nitrogen/generated/android/c++/JWifiNetwork.hpp +86 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/ChannelInfo.kt +41 -0
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/HybridMunimWifiSpec.kt +107 -0
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/Location.kt +41 -0
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/MunimWifiOnLoad.kt +35 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/ScanOptions.kt +41 -0
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/Variant_NullType_ChannelInfo.kt +59 -0
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/Variant_NullType_Double.kt +59 -0
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/Variant_NullType_String.kt +59 -0
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/Variant_NullType_WifiNetwork.kt +59 -0
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/WifiFingerprint.kt +44 -0
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/munimwifi/WifiNetwork.kt +59 -0
  59. package/nitrogen/generated/ios/MunimWifi+autolinking.rb +60 -0
  60. package/nitrogen/generated/ios/MunimWifi-Swift-Cxx-Bridge.cpp +105 -0
  61. package/nitrogen/generated/ios/MunimWifi-Swift-Cxx-Bridge.hpp +653 -0
  62. package/nitrogen/generated/ios/MunimWifi-Swift-Cxx-Umbrella.hpp +64 -0
  63. package/nitrogen/generated/ios/MunimWifiAutolinking.mm +33 -0
  64. package/nitrogen/generated/ios/MunimWifiAutolinking.swift +26 -0
  65. package/nitrogen/generated/ios/c++/HybridMunimWifiSpecSwift.cpp +11 -0
  66. package/nitrogen/generated/ios/c++/HybridMunimWifiSpecSwift.hpp +189 -0
  67. package/nitrogen/generated/ios/swift/ChannelInfo.swift +35 -0
  68. package/nitrogen/generated/ios/swift/Func_void_WifiFingerprint.swift +47 -0
  69. package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
  70. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  71. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__ChannelInfo_.swift +59 -0
  72. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__WifiNetwork_.swift +59 -0
  73. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__double_.swift +59 -0
  74. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__std__string_.swift +59 -0
  75. package/nitrogen/generated/ios/swift/Func_void_std__vector_WifiNetwork_.swift +47 -0
  76. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +47 -0
  77. package/nitrogen/generated/ios/swift/HybridMunimWifiSpec.swift +68 -0
  78. package/nitrogen/generated/ios/swift/HybridMunimWifiSpec_cxx.swift +382 -0
  79. package/nitrogen/generated/ios/swift/Location.swift +47 -0
  80. package/nitrogen/generated/ios/swift/ScanOptions.swift +47 -0
  81. package/nitrogen/generated/ios/swift/Variant_NullType_ChannelInfo.swift +18 -0
  82. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +18 -0
  83. package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +18 -0
  84. package/nitrogen/generated/ios/swift/Variant_NullType_WifiNetwork.swift +18 -0
  85. package/nitrogen/generated/ios/swift/WifiFingerprint.swift +52 -0
  86. package/nitrogen/generated/ios/swift/WifiNetwork.swift +103 -0
  87. package/nitrogen/generated/shared/c++/ChannelInfo.hpp +87 -0
  88. package/nitrogen/generated/shared/c++/HybridMunimWifiSpec.cpp +33 -0
  89. package/nitrogen/generated/shared/c++/HybridMunimWifiSpec.hpp +90 -0
  90. package/nitrogen/generated/shared/c++/Location.hpp +87 -0
  91. package/nitrogen/generated/shared/c++/ScanOptions.hpp +87 -0
  92. package/nitrogen/generated/shared/c++/WifiFingerprint.hpp +97 -0
  93. package/nitrogen/generated/shared/c++/WifiNetwork.hpp +112 -0
  94. package/package.json +122 -0
  95. package/src/index.ts +221 -0
  96. package/src/specs/munim-wifi.nitro.ts +140 -0
@@ -0,0 +1,222 @@
1
+ //
2
+ // HybridMunimWifi.swift
3
+ // Pods
4
+ //
5
+ // Created by sheehanmunim on 1/26/2026.
6
+ //
7
+
8
+ import Foundation
9
+ import CoreWLAN
10
+ import CoreLocation
11
+ import NetworkExtension
12
+
13
+ class HybridMunimWifi: HybridMunimWifiSpec {
14
+ private let wifiClient = CWWiFiClient.shared()
15
+ private var locationManager: CLLocationManager?
16
+ private var scanResults: [CWNetwork] = []
17
+ private var isScanning = false
18
+
19
+ private func getFrequencyChannel(frequency: Int) -> Int {
20
+ // Convert frequency (MHz) to channel number
21
+ if frequency >= 2412 && frequency <= 2484 {
22
+ // 2.4 GHz band
23
+ return ((frequency - 2412) / 5) + 1
24
+ } else if frequency >= 5170 && frequency <= 5825 {
25
+ // 5 GHz band
26
+ return ((frequency - 5170) / 5) + 36
27
+ }
28
+ return 0
29
+ }
30
+
31
+ private func convertNetwork(_ network: CWNetwork) -> WifiNetwork {
32
+ guard let channel = network.wlanChannel else {
33
+ return WifiNetwork(
34
+ ssid: network.ssid ?? "",
35
+ bssid: network.bssid ?? "",
36
+ rssi: Int(network.rssiValue),
37
+ frequency: 0,
38
+ channel: 0,
39
+ capabilities: network.ies?.description ?? "",
40
+ isSecure: false,
41
+ timestamp: Int64(Date().timeIntervalSince1970 * 1000)
42
+ )
43
+ }
44
+
45
+ let channelNumber = Int(channel.channelNumber)
46
+ let frequency: Int
47
+ if channel.channelBand == .band2GHz {
48
+ frequency = 2412 + (channelNumber - 1) * 5
49
+ } else {
50
+ frequency = 5170 + (channelNumber - 36) * 5
51
+ }
52
+
53
+ let isSecure = network.supportsSecurity(.WPA2Personal) ||
54
+ network.supportsSecurity(.WPA3Personal) ||
55
+ network.supportsSecurity(.WPAEnterprise) ||
56
+ network.supportsSecurity(.WPA3Enterprise)
57
+
58
+ return WifiNetwork(
59
+ ssid: network.ssid ?? "",
60
+ bssid: network.bssid ?? "",
61
+ rssi: Int(network.rssiValue),
62
+ frequency: frequency,
63
+ channel: channelNumber,
64
+ capabilities: network.ies?.description ?? "",
65
+ isSecure: isSecure,
66
+ timestamp: Int64(Date().timeIntervalSince1970 * 1000)
67
+ )
68
+ }
69
+
70
+ func isWifiEnabled() throws -> Bool {
71
+ return wifiClient.interface()?.powerOn() ?? false
72
+ }
73
+
74
+ func requestWifiPermission() throws -> Bool {
75
+ // On iOS, Wi-Fi scanning requires location permission
76
+ let locationManager = CLLocationManager()
77
+ self.locationManager = locationManager
78
+
79
+ let status = locationManager.authorizationStatus
80
+ return status == .authorizedWhenInUse || status == .authorizedAlways
81
+ }
82
+
83
+ func scanNetworks(maxResults: Double?, timeout: Double?) throws -> [WifiNetwork] {
84
+ guard let interface = wifiClient.interface() else {
85
+ throw NSError(domain: "MunimWifi", code: 1, userInfo: [NSLocalizedDescriptionKey: "Wi-Fi interface not available"])
86
+ }
87
+
88
+ guard interface.powerOn() else {
89
+ throw NSError(domain: "MunimWifi", code: 2, userInfo: [NSLocalizedDescriptionKey: "Wi-Fi is not enabled"])
90
+ }
91
+
92
+ // Check location permission
93
+ let locationManager = CLLocationManager()
94
+ let status = locationManager.authorizationStatus
95
+ guard status == .authorizedWhenInUse || status == .authorizedAlways else {
96
+ throw NSError(domain: "MunimWifi", code: 3, userInfo: [NSLocalizedDescriptionKey: "Location permission not granted"])
97
+ }
98
+
99
+ do {
100
+ let networks = try interface.scanForNetworks(withName: nil)
101
+ scanResults = networks
102
+
103
+ let wifiNetworks = networks.map { convertNetwork($0) }
104
+ let max = maxResults.map { Int($0) } ?? wifiNetworks.count
105
+ return Array(wifiNetworks.prefix(max))
106
+ } catch {
107
+ throw error
108
+ }
109
+ }
110
+
111
+ func startScan(maxResults: Double?, timeout: Double?) throws {
112
+ isScanning = true
113
+
114
+ guard let interface = wifiClient.interface() else {
115
+ isScanning = false
116
+ return
117
+ }
118
+
119
+ guard interface.powerOn() else {
120
+ isScanning = false
121
+ return
122
+ }
123
+
124
+ // Check location permission
125
+ let locationManager = CLLocationManager()
126
+ let status = locationManager.authorizationStatus
127
+ guard status == .authorizedWhenInUse || status == .authorizedAlways else {
128
+ isScanning = false
129
+ return
130
+ }
131
+
132
+ // Start scanning in background
133
+ DispatchQueue.global(qos: .background).async { [weak self] in
134
+ guard let self = self else { return }
135
+
136
+ do {
137
+ let networks = try interface.scanForNetworks(withName: nil)
138
+ self.scanResults = networks
139
+ self.isScanning = false
140
+ } catch {
141
+ self.isScanning = false
142
+ }
143
+ }
144
+ }
145
+
146
+ func stopScan() throws {
147
+ isScanning = false
148
+ }
149
+
150
+ func getSSIDs() throws -> [String] {
151
+ let networks = scanResults.isEmpty ? (try? wifiClient.interface()?.scanForNetworks(withName: nil)) ?? [] : scanResults
152
+ return networks.compactMap { $0.ssid }.unique()
153
+ }
154
+
155
+ func getWifiFingerprint() throws -> WifiFingerprint {
156
+ let networks = scanResults.isEmpty ? (try? wifiClient.interface()?.scanForNetworks(withName: nil)) ?? [] : scanResults
157
+ let wifiNetworks = networks.map { convertNetwork($0) }
158
+
159
+ return WifiFingerprint(
160
+ networks: wifiNetworks,
161
+ timestamp: Int64(Date().timeIntervalSince1970 * 1000)
162
+ )
163
+ }
164
+
165
+ func getRSSI(ssid: String) throws -> Double? {
166
+ let networks = scanResults.isEmpty ? (try? wifiClient.interface()?.scanForNetworks(withName: nil)) ?? [] : scanResults
167
+ let network = networks.first { $0.ssid == ssid }
168
+ return network.map { Double($0.rssiValue) }
169
+ }
170
+
171
+ func getBSSID(ssid: String) throws -> String? {
172
+ let networks = scanResults.isEmpty ? (try? wifiClient.interface()?.scanForNetworks(withName: nil)) ?? [] : scanResults
173
+ let network = networks.first { $0.ssid == ssid }
174
+ return network?.bssid
175
+ }
176
+
177
+ func getChannelInfo(ssid: String) throws -> ChannelInfo? {
178
+ let networks = scanResults.isEmpty ? (try? wifiClient.interface()?.scanForNetworks(withName: nil)) ?? [] : scanResults
179
+ guard let network = networks.first(where: { $0.ssid == ssid }),
180
+ let channel = network.wlanChannel else {
181
+ return nil
182
+ }
183
+
184
+ let channelNumber = Int(channel.channelNumber)
185
+ let frequency: Int
186
+ if channel.channelBand == .band2GHz {
187
+ frequency = 2412 + (channelNumber - 1) * 5
188
+ } else {
189
+ frequency = 5170 + (channelNumber - 36) * 5
190
+ }
191
+
192
+ return ChannelInfo(
193
+ channel: channelNumber,
194
+ frequency: frequency
195
+ )
196
+ }
197
+
198
+ func getNetworkInfo(ssid: String) throws -> WifiNetwork? {
199
+ let networks = scanResults.isEmpty ? (try? wifiClient.interface()?.scanForNetworks(withName: nil)) ?? [] : scanResults
200
+ guard let network = networks.first(where: { $0.ssid == ssid }) else {
201
+ return nil
202
+ }
203
+ return convertNetwork(network)
204
+ }
205
+
206
+ func addListener(eventName: String) throws {
207
+ // Event listener implementation can be added here if needed
208
+ print("[MunimWifi] Adding listener for event: \(eventName)")
209
+ }
210
+
211
+ func removeListeners(count: Double) throws {
212
+ // Event listener removal implementation can be added here if needed
213
+ print("[MunimWifi] Removing \(count) listeners")
214
+ }
215
+ }
216
+
217
+ extension Array where Element: Hashable {
218
+ func unique() -> [Element] {
219
+ var seen = Set<Element>()
220
+ return filter { seen.insert($0).inserted }
221
+ }
222
+ }
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.addEventListener = addEventListener;
7
+ exports.addListener = addListener;
8
+ exports.addNetworkFoundListener = addNetworkFoundListener;
9
+ exports.default = void 0;
10
+ exports.getBSSID = getBSSID;
11
+ exports.getChannelInfo = getChannelInfo;
12
+ exports.getNetworkInfo = getNetworkInfo;
13
+ exports.getRSSI = getRSSI;
14
+ exports.getSSIDs = getSSIDs;
15
+ exports.getWifiFingerprint = getWifiFingerprint;
16
+ exports.isWifiEnabled = isWifiEnabled;
17
+ exports.removeListeners = removeListeners;
18
+ exports.requestWifiPermission = requestWifiPermission;
19
+ exports.scanNetworks = scanNetworks;
20
+ exports.startScan = startScan;
21
+ exports.stopScan = stopScan;
22
+ var _reactNativeNitroModules = require("react-native-nitro-modules");
23
+ var _reactNative = require("react-native");
24
+ const MunimWifi = _reactNativeNitroModules.NitroModules.createHybridObject('MunimWifi');
25
+
26
+ // Event Emitter for Wi-Fi events
27
+ const {
28
+ MunimWifiEventEmitter
29
+ } = _reactNative.NativeModules;
30
+ let eventEmitter = null;
31
+ if (MunimWifiEventEmitter) {
32
+ try {
33
+ eventEmitter = new _reactNative.NativeEventEmitter(MunimWifiEventEmitter);
34
+ } catch (error) {
35
+ console.error('[munim-wifi] Failed to initialize event emitter:', error);
36
+ }
37
+ }
38
+
39
+ // ========== Wi-Fi Functions ==========
40
+
41
+ /**
42
+ * Check if Wi-Fi is enabled on the device.
43
+ *
44
+ * @returns Promise resolving to true if Wi-Fi is enabled, false otherwise.
45
+ */
46
+ function isWifiEnabled() {
47
+ return MunimWifi.isWifiEnabled();
48
+ }
49
+
50
+ /**
51
+ * Request Wi-Fi permissions (Android) or check authorization status (iOS).
52
+ * On Android, this requests location permission which is required for Wi-Fi scanning.
53
+ * On iOS, this checks location authorization status.
54
+ *
55
+ * @returns Promise resolving to true if permissions are granted, false otherwise.
56
+ */
57
+ function requestWifiPermission() {
58
+ return MunimWifi.requestWifiPermission();
59
+ }
60
+
61
+ /**
62
+ * Scan for nearby Wi-Fi networks.
63
+ *
64
+ * @param options - Optional scan configuration including max results and timeout.
65
+ * @returns Promise resolving to array of discovered Wi-Fi networks.
66
+ */
67
+ function scanNetworks(options) {
68
+ return MunimWifi.scanNetworks(options);
69
+ }
70
+
71
+ /**
72
+ * Start continuous Wi-Fi scanning. Results will be emitted via events.
73
+ *
74
+ * @param options - Optional scan configuration.
75
+ */
76
+ function startScan(options) {
77
+ return MunimWifi.startScan(options);
78
+ }
79
+
80
+ /**
81
+ * Stop continuous Wi-Fi scanning.
82
+ */
83
+ function stopScan() {
84
+ return MunimWifi.stopScan();
85
+ }
86
+
87
+ /**
88
+ * Get list of SSIDs (network names) from the last scan.
89
+ *
90
+ * @returns Promise resolving to array of SSID strings.
91
+ */
92
+ function getSSIDs() {
93
+ return MunimWifi.getSSIDs();
94
+ }
95
+
96
+ /**
97
+ * Get Wi-Fi fingerprint containing all network information.
98
+ * This includes SSIDs, BSSIDs, RSSI, channels, and frequencies.
99
+ *
100
+ * @returns Promise resolving to Wi-Fi fingerprint data.
101
+ */
102
+ function getWifiFingerprint() {
103
+ return MunimWifi.getWifiFingerprint();
104
+ }
105
+
106
+ /**
107
+ * Get RSSI (signal strength) for a specific network by SSID.
108
+ *
109
+ * @param ssid - The SSID of the network.
110
+ * @returns Promise resolving to RSSI value in dBm, or null if network not found.
111
+ */
112
+ function getRSSI(ssid) {
113
+ return MunimWifi.getRSSI(ssid);
114
+ }
115
+
116
+ /**
117
+ * Get BSSID (MAC address) for a specific network by SSID.
118
+ *
119
+ * @param ssid - The SSID of the network.
120
+ * @returns Promise resolving to BSSID string, or null if network not found.
121
+ */
122
+ function getBSSID(ssid) {
123
+ return MunimWifi.getBSSID(ssid);
124
+ }
125
+
126
+ /**
127
+ * Get channel and frequency information for a specific network by SSID.
128
+ *
129
+ * @param ssid - The SSID of the network.
130
+ * @returns Promise resolving to object with channel and frequency, or null if network not found.
131
+ */
132
+ function getChannelInfo(ssid) {
133
+ return MunimWifi.getChannelInfo(ssid);
134
+ }
135
+
136
+ /**
137
+ * Get all available information for a specific network by SSID.
138
+ *
139
+ * @param ssid - The SSID of the network.
140
+ * @returns Promise resolving to WifiNetwork object, or null if network not found.
141
+ */
142
+ function getNetworkInfo(ssid) {
143
+ return MunimWifi.getNetworkInfo(ssid);
144
+ }
145
+
146
+ // ========== Event Management ==========
147
+
148
+ /**
149
+ * Add a network found event listener (for continuous scanning).
150
+ *
151
+ * @param callback - Function to call when a network is found
152
+ * @returns A function to remove the listener
153
+ */
154
+ function addNetworkFoundListener(callback) {
155
+ if (!eventEmitter) {
156
+ console.warn('[munim-wifi] Cannot add listener - event emitter not available');
157
+ return () => {};
158
+ }
159
+ const subscription = eventEmitter.addListener('networkFound', callback);
160
+ return () => subscription.remove();
161
+ }
162
+
163
+ /**
164
+ * Add an event listener.
165
+ *
166
+ * @param eventName - The name of the event to listen for.
167
+ * @param callback - The callback to invoke when the event occurs.
168
+ * @returns A function to remove the listener
169
+ */
170
+ function addEventListener(eventName, callback) {
171
+ if (!eventEmitter) {
172
+ console.warn('[munim-wifi] Cannot add listener - event emitter not available');
173
+ return () => {};
174
+ }
175
+ const subscription = eventEmitter.addListener(eventName, callback);
176
+ return () => subscription.remove();
177
+ }
178
+
179
+ /**
180
+ * Add an event listener (legacy method).
181
+ *
182
+ * @param eventName - The name of the event to listen for.
183
+ */
184
+ function addListener(eventName) {
185
+ return MunimWifi.addListener(eventName);
186
+ }
187
+
188
+ /**
189
+ * Remove event listeners.
190
+ *
191
+ * @param count - Number of listeners to remove.
192
+ */
193
+ function removeListeners(count) {
194
+ return MunimWifi.removeListeners(count);
195
+ }
196
+
197
+ // ========== Type Exports ==========
198
+ // Default export for convenience
199
+ var _default = exports.default = {
200
+ isWifiEnabled,
201
+ requestWifiPermission,
202
+ scanNetworks,
203
+ startScan,
204
+ stopScan,
205
+ getSSIDs,
206
+ getWifiFingerprint,
207
+ getRSSI,
208
+ getBSSID,
209
+ getChannelInfo,
210
+ getNetworkInfo,
211
+ addNetworkFoundListener,
212
+ addEventListener,
213
+ addListener,
214
+ removeListeners
215
+ };
216
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_reactNative","MunimWifi","NitroModules","createHybridObject","MunimWifiEventEmitter","NativeModules","eventEmitter","NativeEventEmitter","error","console","isWifiEnabled","requestWifiPermission","scanNetworks","options","startScan","stopScan","getSSIDs","getWifiFingerprint","getRSSI","ssid","getBSSID","getChannelInfo","getNetworkInfo","addNetworkFoundListener","callback","warn","subscription","addListener","remove","addEventListener","eventName","removeListeners","count","_default","exports","default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=munim-wifi.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/munim-wifi.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ import { NativeEventEmitter, NativeModules } from 'react-native';
5
+ const MunimWifi = NitroModules.createHybridObject('MunimWifi');
6
+
7
+ // Event Emitter for Wi-Fi events
8
+ const {
9
+ MunimWifiEventEmitter
10
+ } = NativeModules;
11
+ let eventEmitter = null;
12
+ if (MunimWifiEventEmitter) {
13
+ try {
14
+ eventEmitter = new NativeEventEmitter(MunimWifiEventEmitter);
15
+ } catch (error) {
16
+ console.error('[munim-wifi] Failed to initialize event emitter:', error);
17
+ }
18
+ }
19
+
20
+ // ========== Wi-Fi Functions ==========
21
+
22
+ /**
23
+ * Check if Wi-Fi is enabled on the device.
24
+ *
25
+ * @returns Promise resolving to true if Wi-Fi is enabled, false otherwise.
26
+ */
27
+ export function isWifiEnabled() {
28
+ return MunimWifi.isWifiEnabled();
29
+ }
30
+
31
+ /**
32
+ * Request Wi-Fi permissions (Android) or check authorization status (iOS).
33
+ * On Android, this requests location permission which is required for Wi-Fi scanning.
34
+ * On iOS, this checks location authorization status.
35
+ *
36
+ * @returns Promise resolving to true if permissions are granted, false otherwise.
37
+ */
38
+ export function requestWifiPermission() {
39
+ return MunimWifi.requestWifiPermission();
40
+ }
41
+
42
+ /**
43
+ * Scan for nearby Wi-Fi networks.
44
+ *
45
+ * @param options - Optional scan configuration including max results and timeout.
46
+ * @returns Promise resolving to array of discovered Wi-Fi networks.
47
+ */
48
+ export function scanNetworks(options) {
49
+ return MunimWifi.scanNetworks(options);
50
+ }
51
+
52
+ /**
53
+ * Start continuous Wi-Fi scanning. Results will be emitted via events.
54
+ *
55
+ * @param options - Optional scan configuration.
56
+ */
57
+ export function startScan(options) {
58
+ return MunimWifi.startScan(options);
59
+ }
60
+
61
+ /**
62
+ * Stop continuous Wi-Fi scanning.
63
+ */
64
+ export function stopScan() {
65
+ return MunimWifi.stopScan();
66
+ }
67
+
68
+ /**
69
+ * Get list of SSIDs (network names) from the last scan.
70
+ *
71
+ * @returns Promise resolving to array of SSID strings.
72
+ */
73
+ export function getSSIDs() {
74
+ return MunimWifi.getSSIDs();
75
+ }
76
+
77
+ /**
78
+ * Get Wi-Fi fingerprint containing all network information.
79
+ * This includes SSIDs, BSSIDs, RSSI, channels, and frequencies.
80
+ *
81
+ * @returns Promise resolving to Wi-Fi fingerprint data.
82
+ */
83
+ export function getWifiFingerprint() {
84
+ return MunimWifi.getWifiFingerprint();
85
+ }
86
+
87
+ /**
88
+ * Get RSSI (signal strength) for a specific network by SSID.
89
+ *
90
+ * @param ssid - The SSID of the network.
91
+ * @returns Promise resolving to RSSI value in dBm, or null if network not found.
92
+ */
93
+ export function getRSSI(ssid) {
94
+ return MunimWifi.getRSSI(ssid);
95
+ }
96
+
97
+ /**
98
+ * Get BSSID (MAC address) for a specific network by SSID.
99
+ *
100
+ * @param ssid - The SSID of the network.
101
+ * @returns Promise resolving to BSSID string, or null if network not found.
102
+ */
103
+ export function getBSSID(ssid) {
104
+ return MunimWifi.getBSSID(ssid);
105
+ }
106
+
107
+ /**
108
+ * Get channel and frequency information for a specific network by SSID.
109
+ *
110
+ * @param ssid - The SSID of the network.
111
+ * @returns Promise resolving to object with channel and frequency, or null if network not found.
112
+ */
113
+ export function getChannelInfo(ssid) {
114
+ return MunimWifi.getChannelInfo(ssid);
115
+ }
116
+
117
+ /**
118
+ * Get all available information for a specific network by SSID.
119
+ *
120
+ * @param ssid - The SSID of the network.
121
+ * @returns Promise resolving to WifiNetwork object, or null if network not found.
122
+ */
123
+ export function getNetworkInfo(ssid) {
124
+ return MunimWifi.getNetworkInfo(ssid);
125
+ }
126
+
127
+ // ========== Event Management ==========
128
+
129
+ /**
130
+ * Add a network found event listener (for continuous scanning).
131
+ *
132
+ * @param callback - Function to call when a network is found
133
+ * @returns A function to remove the listener
134
+ */
135
+ export function addNetworkFoundListener(callback) {
136
+ if (!eventEmitter) {
137
+ console.warn('[munim-wifi] Cannot add listener - event emitter not available');
138
+ return () => {};
139
+ }
140
+ const subscription = eventEmitter.addListener('networkFound', callback);
141
+ return () => subscription.remove();
142
+ }
143
+
144
+ /**
145
+ * Add an event listener.
146
+ *
147
+ * @param eventName - The name of the event to listen for.
148
+ * @param callback - The callback to invoke when the event occurs.
149
+ * @returns A function to remove the listener
150
+ */
151
+ export function addEventListener(eventName, callback) {
152
+ if (!eventEmitter) {
153
+ console.warn('[munim-wifi] Cannot add listener - event emitter not available');
154
+ return () => {};
155
+ }
156
+ const subscription = eventEmitter.addListener(eventName, callback);
157
+ return () => subscription.remove();
158
+ }
159
+
160
+ /**
161
+ * Add an event listener (legacy method).
162
+ *
163
+ * @param eventName - The name of the event to listen for.
164
+ */
165
+ export function addListener(eventName) {
166
+ return MunimWifi.addListener(eventName);
167
+ }
168
+
169
+ /**
170
+ * Remove event listeners.
171
+ *
172
+ * @param count - Number of listeners to remove.
173
+ */
174
+ export function removeListeners(count) {
175
+ return MunimWifi.removeListeners(count);
176
+ }
177
+
178
+ // ========== Type Exports ==========
179
+
180
+ // Default export for convenience
181
+ export default {
182
+ isWifiEnabled,
183
+ requestWifiPermission,
184
+ scanNetworks,
185
+ startScan,
186
+ stopScan,
187
+ getSSIDs,
188
+ getWifiFingerprint,
189
+ getRSSI,
190
+ getBSSID,
191
+ getChannelInfo,
192
+ getNetworkInfo,
193
+ addNetworkFoundListener,
194
+ addEventListener,
195
+ addListener,
196
+ removeListeners
197
+ };
198
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","NativeEventEmitter","NativeModules","MunimWifi","createHybridObject","MunimWifiEventEmitter","eventEmitter","error","console","isWifiEnabled","requestWifiPermission","scanNetworks","options","startScan","stopScan","getSSIDs","getWifiFingerprint","getRSSI","ssid","getBSSID","getChannelInfo","getNetworkInfo","addNetworkFoundListener","callback","warn","subscription","addListener","remove","addEventListener","eventName","removeListeners","count"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=munim-wifi.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/munim-wifi.nitro.ts"],"mappings":"","ignoreList":[]}