react-native-zeroconf 0.13.8 → 0.15.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 (300) hide show
  1. package/NOTICE +49 -0
  2. package/README.md +489 -65
  3. package/android/build.gradle +23 -24
  4. package/android/src/main/AndroidManifest.xml +5 -2
  5. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroConfImplFactory.java +10 -3
  6. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfModule.java +3 -2
  7. package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/NsdServiceImpl.java +83 -22
  8. package/android/src/main/java/com/balthazargronon/RCTZeroconf/rx2dnssd/DnssdImpl.java +61 -16
  9. package/android/src/main/java/com/github/druk/dnssd/BaseListener.java +33 -0
  10. package/android/src/main/java/com/github/druk/dnssd/BrowseListener.java +67 -0
  11. package/android/src/main/java/com/github/druk/dnssd/DNSRecord.java +47 -0
  12. package/android/src/main/java/com/github/druk/dnssd/DNSSD.java +650 -0
  13. package/android/src/main/java/com/github/druk/dnssd/DNSSDBindable.java +67 -0
  14. package/android/src/main/java/com/github/druk/dnssd/DNSSDEmbedded.java +135 -0
  15. package/android/src/main/java/com/github/druk/dnssd/DNSSDException.java +66 -0
  16. package/android/src/main/java/com/github/druk/dnssd/DNSSDRecordRegistrar.java +55 -0
  17. package/android/src/main/java/com/github/druk/dnssd/DNSSDRegistration.java +54 -0
  18. package/android/src/main/java/com/github/druk/dnssd/DNSSDService.java +35 -0
  19. package/android/src/main/java/com/github/druk/dnssd/DomainListener.java +57 -0
  20. package/android/src/main/java/com/github/druk/dnssd/InternalBrowseListener.java +76 -0
  21. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSD.java +870 -0
  22. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRecordRegistrar.java +30 -0
  23. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRegistration.java +34 -0
  24. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDService.java +29 -0
  25. package/android/src/main/java/com/github/druk/dnssd/InternalDomainListener.java +62 -0
  26. package/android/src/main/java/com/github/druk/dnssd/InternalQueryListener.java +61 -0
  27. package/android/src/main/java/com/github/druk/dnssd/InternalRegisterListener.java +51 -0
  28. package/android/src/main/java/com/github/druk/dnssd/InternalResolveListener.java +58 -0
  29. package/android/src/main/java/com/github/druk/dnssd/NSClass.java +16 -0
  30. package/android/src/main/java/com/github/druk/dnssd/NSType.java +58 -0
  31. package/android/src/main/java/com/github/druk/dnssd/QueryListener.java +54 -0
  32. package/android/src/main/java/com/github/druk/dnssd/RegisterListener.java +46 -0
  33. package/android/src/main/java/com/github/druk/dnssd/RegisterRecordListener.java +35 -0
  34. package/android/src/main/java/com/github/druk/dnssd/ResolveListener.java +55 -0
  35. package/android/src/main/java/com/github/druk/dnssd/TXTRecord.java +293 -0
  36. package/android/src/main/java/com/github/druk/rx2dnssd/BonjourService.java +400 -0
  37. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2BrowseListener.java +55 -0
  38. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2Dnssd.java +127 -0
  39. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdBindable.java +35 -0
  40. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdCommon.java +280 -0
  41. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdEmbedded.java +31 -0
  42. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2QueryListener.java +70 -0
  43. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2RegisterListener.java +47 -0
  44. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2ResolveListener.java +51 -0
  45. package/android/src/main/jni/Android.mk +95 -0
  46. package/android/src/main/jni/Application.mk +3 -0
  47. package/android/src/main/jni/DNSSD.java.h +290 -0
  48. package/android/src/main/jni/JNISupport.c +1140 -0
  49. package/android/src/main/jni/mdnsresponder/Android.bp +215 -0
  50. package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.c +75 -0
  51. package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.h +41 -0
  52. package/android/src/main/jni/mdnsresponder/Clients/Makefile +54 -0
  53. package/android/src/main/jni/mdnsresponder/Clients/ReadMe.txt +25 -0
  54. package/android/src/main/jni/mdnsresponder/Clients/dns-sd.c +1351 -0
  55. package/android/src/main/jni/mdnsresponder/LICENSE +13 -0
  56. package/android/src/main/jni/mdnsresponder/MODULE_LICENSE_APACHE2 +0 -0
  57. package/android/src/main/jni/mdnsresponder/Makefile +41 -0
  58. package/android/src/main/jni/mdnsresponder/NOTICE +13 -0
  59. package/android/src/main/jni/mdnsresponder/PrivateDNS.txt +275 -0
  60. package/android/src/main/jni/mdnsresponder/README.txt +166 -0
  61. package/android/src/main/jni/mdnsresponder/README.version +3 -0
  62. package/android/src/main/jni/mdnsresponder/android/caseMapping/Iphlpapi.h +1 -0
  63. package/android/src/main/jni/mdnsresponder/android/caseMapping/README +3 -0
  64. package/android/src/main/jni/mdnsresponder/android/caseMapping/Resource.h +1 -0
  65. package/android/src/main/jni/mdnsresponder/android/caseMapping/Ws2tcpip.h +1 -0
  66. package/android/src/main/jni/mdnsresponder/android/caseMapping/ipExport.h +1 -0
  67. package/android/src/main/jni/mdnsresponder/android/windows_firewall_dummy.c +10 -0
  68. package/android/src/main/jni/mdnsresponder/mDNSCore/DNSCommon.c +3157 -0
  69. package/android/src/main/jni/mdnsresponder/mDNSCore/DNSCommon.h +292 -0
  70. package/android/src/main/jni/mdnsresponder/mDNSCore/DNSDigest.c +1579 -0
  71. package/android/src/main/jni/mdnsresponder/mDNSCore/Implementer Notes.txt +66 -0
  72. package/android/src/main/jni/mdnsresponder/mDNSCore/mDNS.c +11469 -0
  73. package/android/src/main/jni/mdnsresponder/mDNSCore/mDNSDebug.h +164 -0
  74. package/android/src/main/jni/mdnsresponder/mDNSCore/mDNSEmbeddedAPI.h +2974 -0
  75. package/android/src/main/jni/mdnsresponder/mDNSCore/uDNS.c +4969 -0
  76. package/android/src/main/jni/mdnsresponder/mDNSCore/uDNS.h +132 -0
  77. package/android/src/main/jni/mdnsresponder/mDNSPosix/Client.c +223 -0
  78. package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.c +91 -0
  79. package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.h +18 -0
  80. package/android/src/main/jni/mdnsresponder/mDNSPosix/Identify.c +378 -0
  81. package/android/src/main/jni/mdnsresponder/mDNSPosix/Makefile +520 -0
  82. package/android/src/main/jni/mdnsresponder/mDNSPosix/NetMonitor.c +1010 -0
  83. package/android/src/main/jni/mdnsresponder/mDNSPosix/PosixDaemon.c +329 -0
  84. package/android/src/main/jni/mdnsresponder/mDNSPosix/ProxyResponder.c +300 -0
  85. package/android/src/main/jni/mdnsresponder/mDNSPosix/ReadMe.txt +314 -0
  86. package/android/src/main/jni/mdnsresponder/mDNSPosix/Responder.c +792 -0
  87. package/android/src/main/jni/mdnsresponder/mDNSPosix/Services.txt +36 -0
  88. package/android/src/main/jni/mdnsresponder/mDNSPosix/libnss_mdns.8 +148 -0
  89. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.c +1685 -0
  90. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.h +88 -0
  91. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSUNP.c +726 -0
  92. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSUNP.h +130 -0
  93. package/android/src/main/jni/mdnsresponder/mDNSPosix/mdnsd.sh +73 -0
  94. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_ReadMe.txt +125 -0
  95. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.c +2723 -0
  96. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf +13 -0
  97. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf.5 +135 -0
  98. package/android/src/main/jni/mdnsresponder/mDNSPosix/parselog.py +247 -0
  99. package/android/src/main/jni/mdnsresponder/mDNSResponder.sln +400 -0
  100. package/android/src/main/jni/mdnsresponder/mDNSShared/CommonServices.h +1537 -0
  101. package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.c +3075 -0
  102. package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.h +1607 -0
  103. package/android/src/main/jni/mdnsresponder/mDNSShared/GenLinkedList.c +319 -0
  104. package/android/src/main/jni/mdnsresponder/mDNSShared/GenLinkedList.h +90 -0
  105. package/android/src/main/jni/mdnsresponder/mDNSShared/PlatformCommon.c +220 -0
  106. package/android/src/main/jni/mdnsresponder/mDNSShared/PlatformCommon.h +18 -0
  107. package/android/src/main/jni/mdnsresponder/mDNSShared/dns-sd.1 +194 -0
  108. package/android/src/main/jni/mdnsresponder/mDNSShared/dns_sd.h +2452 -0
  109. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.8 +69 -0
  110. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.c +3146 -0
  111. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.conf +60 -0
  112. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.h +163 -0
  113. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_lexer.l +84 -0
  114. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_parser.y +585 -0
  115. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientlib.c +368 -0
  116. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientshim.c +802 -0
  117. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientstub.c +1988 -0
  118. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_ipc.c +161 -0
  119. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_ipc.h +219 -0
  120. package/android/src/main/jni/mdnsresponder/mDNSShared/mDNS.1 +198 -0
  121. package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSDebug.c +93 -0
  122. package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSResponder.8 +116 -0
  123. package/android/src/main/jni/mdnsresponder/mDNSShared/uds_daemon.c +4758 -0
  124. package/android/src/main/jni/mdnsresponder/mDNSShared/uds_daemon.h +80 -0
  125. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.cpp +441 -0
  126. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.h +156 -0
  127. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.cpp +59 -0
  128. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.h +48 -0
  129. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.cpp +301 -0
  130. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.h +105 -0
  131. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.cpp +380 -0
  132. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.def +20 -0
  133. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.h +84 -0
  134. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.rc +141 -0
  135. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.vcproj +727 -0
  136. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelDll.rc +123 -0
  137. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.cpp +373 -0
  138. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.h +48 -0
  139. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.rc +123 -0
  140. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.vcproj +764 -0
  141. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.rc +270 -0
  142. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.vcproj +487 -0
  143. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.rc +134 -0
  144. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.vcproj +518 -0
  145. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.cpp +197 -0
  146. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.h +87 -0
  147. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.cpp +387 -0
  148. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.h +75 -0
  149. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.cpp +544 -0
  150. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.h +107 -0
  151. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.cpp +273 -0
  152. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.h +123 -0
  153. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.cpp +115 -0
  154. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.h +54 -0
  155. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.dll.manifest +10 -0
  156. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.exe.manifest +17 -0
  157. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.manifest +17 -0
  158. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.rc2 +13 -0
  159. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel64.manifest +17 -0
  160. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/EnergySaver.ico +0 -0
  161. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/controlpanel.ico +0 -0
  162. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/failure.ico +0 -0
  163. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/success.ico +0 -0
  164. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/resource.h +56 -0
  165. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.cpp +20 -0
  166. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.h +64 -0
  167. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.aps +0 -0
  168. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.rc +102 -0
  169. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dllmain.c +112 -0
  170. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.def +48 -0
  171. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.vcproj +472 -0
  172. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/resource.h +27 -0
  173. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/AssemblyInfo.cpp +84 -0
  174. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/PString.h +70 -0
  175. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.cpp +22 -0
  176. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.h +33 -0
  177. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.cpp +1234 -0
  178. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.h +1392 -0
  179. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.ico +0 -0
  180. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.rc +113 -0
  181. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.vcproj +446 -0
  182. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/resource.h +3 -0
  183. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.cpp +693 -0
  184. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.h +52 -0
  185. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.vcproj +324 -0
  186. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.cpp +208 -0
  187. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.def +35 -0
  188. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.idl +491 -0
  189. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rc +126 -0
  190. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rgs +11 -0
  191. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.vcproj +625 -0
  192. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSD.cpp +892 -0
  193. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.cpp +31 -0
  194. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.h +133 -0
  195. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.rgs +27 -0
  196. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.cpp +101 -0
  197. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.h +185 -0
  198. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.rgs +27 -0
  199. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.cpp +2095 -0
  200. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.h +429 -0
  201. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.rgs +27 -0
  202. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.cpp +344 -0
  203. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.h +102 -0
  204. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.cpp +381 -0
  205. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.h +203 -0
  206. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.rgs +27 -0
  207. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/_IDNSSDEvents_CP.h +358 -0
  208. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.c +51 -0
  209. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.h +49 -0
  210. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/resource.h +30 -0
  211. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/stdafx.h +88 -0
  212. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.sln +21 -0
  213. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.vcproj +253 -0
  214. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.sln +21 -0
  215. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.vcproj +267 -0
  216. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.ico +0 -0
  217. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc +323 -0
  218. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc2 +20 -0
  219. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Resource.h +53 -0
  220. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.cpp +71 -0
  221. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.h +62 -0
  222. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.cpp +111 -0
  223. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.h +68 -0
  224. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.cpp +1426 -0
  225. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.h +131 -0
  226. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.cpp +109 -0
  227. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.h +53 -0
  228. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.cpp +18 -0
  229. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.h +48 -0
  230. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcc +37 -0
  231. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcp +868 -0
  232. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcw +29 -0
  233. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.ico +0 -0
  234. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc +194 -0
  235. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc2 +13 -0
  236. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/newres.h +28 -0
  237. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/resource.h +22 -0
  238. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.cpp +92 -0
  239. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.h +57 -0
  240. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.cpp +394 -0
  241. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.h +84 -0
  242. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.cpp +18 -0
  243. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.h +46 -0
  244. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/Java.vcproj +111 -0
  245. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/jdns_sd.rc +62 -0
  246. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile +143 -0
  247. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile64 +143 -0
  248. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.aps +0 -0
  249. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.c +581 -0
  250. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.rc +103 -0
  251. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.vcproj +409 -0
  252. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/Prefix.h +28 -0
  253. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/resource.h +27 -0
  254. package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.c +128 -0
  255. package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.h +70 -0
  256. package/android/src/main/jni/mdnsresponder/mDNSWindows/README.txt +85 -0
  257. package/android/src/main/jni/mdnsresponder/mDNSWindows/RegNames.h +57 -0
  258. package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.c +338 -0
  259. package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.h +42 -0
  260. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLog.mc +11 -0
  261. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLogMessages.bin +0 -0
  262. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.cpp +484 -0
  263. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.h +79 -0
  264. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Prefix.h +30 -0
  265. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.aps +0 -0
  266. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.c +2669 -0
  267. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.h +30 -0
  268. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.mcp +0 -0
  269. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.rc +114 -0
  270. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.vcproj +562 -0
  271. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/main.c +32 -0
  272. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder.manifest +12 -0
  273. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder64.manifest +12 -0
  274. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resource.h +17 -0
  275. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resrc1.h +15 -0
  276. package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.cpp +165 -0
  277. package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.h +36 -0
  278. package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.cpp +93 -0
  279. package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.h +34 -0
  280. package/android/src/main/jni/mdnsresponder/mDNSWindows/WinVersRes.h +35 -0
  281. package/android/src/main/jni/mdnsresponder/mDNSWindows/isocode.h +135 -0
  282. package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.c +268 -0
  283. package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.h +54 -0
  284. package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.c +5200 -0
  285. package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.h +208 -0
  286. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/ReadMe.txt +15 -0
  287. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.aps +0 -0
  288. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.c +2430 -0
  289. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.def +24 -0
  290. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.rc +104 -0
  291. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.vcproj +457 -0
  292. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/resource.h +27 -0
  293. package/android/src/main/jni/mdnsresponder/mdnsd.rc +7 -0
  294. package/android/src/main/jni/nameser.h +588 -0
  295. package/dist/index.js +160 -1
  296. package/index.d.ts +91 -0
  297. package/ios/RNZeroconf/RNNetServiceSerializer.m +7 -3
  298. package/ios/RNZeroconf/RNZeroconf.m +8 -0
  299. package/package.json +25 -17
  300. package/src/index.js +183 -0
package/dist/index.js CHANGED
@@ -1 +1,160 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.ImplType=undefined;var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[typeof Symbol==='function'?Symbol.iterator:'@@iterator'](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"])_i["return"]();}finally{if(_d)throw _e;}}return _arr;}return function(arr,i){if(Array.isArray(arr)){return arr;}else if((typeof Symbol==='function'?Symbol.iterator:'@@iterator')in Object(arr)){return sliceIterator(arr,i);}else{throw new TypeError("Invalid attempt to destructure non-iterable instance");}};}();var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _reactNative=require('react-native');var _events=require('events');function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var RNZeroconf=_reactNative.NativeModules.RNZeroconf;var ImplType=exports.ImplType={NSD:'NSD',DNSSD:'DNSSD'};var Zeroconf=function(_EventEmitter){_inherits(Zeroconf,_EventEmitter);function Zeroconf(props){_classCallCheck(this,Zeroconf);var _this=_possibleConstructorReturn(this,(Zeroconf.__proto__||Object.getPrototypeOf(Zeroconf)).call(this,props));_this._services={};_this._publishedServices={};_this._dListeners={};_this.addDeviceListeners();return _this;}_createClass(Zeroconf,[{key:'addDeviceListeners',value:function addDeviceListeners(){var _this2=this;if(Object.keys(this._dListeners).length){return this.emit('error',new Error('RNZeroconf listeners already in place.'));}this._dListeners.start=_reactNative.DeviceEventEmitter.addListener('RNZeroconfStart',function(){return _this2.emit('start');});this._dListeners.stop=_reactNative.DeviceEventEmitter.addListener('RNZeroconfStop',function(){return _this2.emit('stop');});this._dListeners.error=_reactNative.DeviceEventEmitter.addListener('RNZeroconfError',function(err){if(_this2.listenerCount('error')>0){_this2.emit('error',new Error(err));}});this._dListeners.found=_reactNative.DeviceEventEmitter.addListener('RNZeroconfFound',function(service){if(!service||!service.name){return;}var name=service.name;_this2._services[name]=service;_this2.emit('found',name);_this2.emit('update');});this._dListeners.remove=_reactNative.DeviceEventEmitter.addListener('RNZeroconfRemove',function(service){if(!service||!service.name){return;}var name=service.name;delete _this2._services[name];_this2.emit('remove',name);_this2.emit('update');});this._dListeners.resolved=_reactNative.DeviceEventEmitter.addListener('RNZeroconfResolved',function(service){if(!service||!service.name){return;}_this2._services[service.name]=service;_this2.emit('resolved',service);_this2.emit('update');});this._dListeners.published=_reactNative.DeviceEventEmitter.addListener('RNZeroconfServiceRegistered',function(service){if(!service||!service.name){return;}_this2._publishedServices[service.name]=service;_this2.emit('published',service);});this._dListeners.unpublished=_reactNative.DeviceEventEmitter.addListener('RNZeroconfServiceUnregistered',function(service){if(!service||!service.name){return;}delete _this2._publishedServices[service.name];_this2.emit('unpublished',service);});}},{key:'removeDeviceListeners',value:function removeDeviceListeners(){var _this3=this;Object.keys(this._dListeners).forEach(function(name){return _this3._dListeners[name].remove();});this._dListeners={};}},{key:'getServices',value:function getServices(){return this._services;}},{key:'scan',value:function scan(){var type=arguments.length>0&&arguments[0]!==undefined?arguments[0]:'http';var protocol=arguments.length>1&&arguments[1]!==undefined?arguments[1]:'tcp';var domain=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'local.';var implType=arguments.length>3&&arguments[3]!==undefined?arguments[3]:ImplType.NSD;this._services={};this.emit('update');if(_reactNative.Platform.OS==='android'){RNZeroconf.scan(type,protocol,domain,implType);}else{RNZeroconf.scan(type,protocol,domain);}}},{key:'stop',value:function stop(){var implType=arguments.length>0&&arguments[0]!==undefined?arguments[0]:ImplType.NSD;if(_reactNative.Platform.OS==='android'){RNZeroconf.stop(implType);}else{RNZeroconf.stop();}}},{key:'publishService',value:function publishService(type,protocol){var domain=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'local.';var name=arguments[3];var port=arguments[4];var txt=arguments.length>5&&arguments[5]!==undefined?arguments[5]:{};var implType=arguments.length>6&&arguments[6]!==undefined?arguments[6]:ImplType.NSD;if(Object.keys(txt).length!==0){Object.entries(txt).map(function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];return txt[key]=value.toString();});}if(_reactNative.Platform.OS==='android'){RNZeroconf.registerService(type,protocol,domain,name,port,txt,implType);}else{RNZeroconf.registerService(type,protocol,domain,name,port,txt);}}},{key:'unpublishService',value:function unpublishService(name){var implType=arguments.length>1&&arguments[1]!==undefined?arguments[1]:ImplType.NSD;if(_reactNative.Platform.OS==='android'){RNZeroconf.unregisterService(name,implType);}else{RNZeroconf.unregisterService(name);}}}]);return Zeroconf;}(_events.EventEmitter);exports.default=Zeroconf;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.ImplType = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _events = require("events");
9
+ const RNZeroconf = _reactNative.NativeModules.RNZeroconf;
10
+ const ImplType = exports.ImplType = {
11
+ NSD: 'NSD',
12
+ DNSSD: 'DNSSD'
13
+ };
14
+ class Zeroconf extends _events.EventEmitter {
15
+ constructor(props) {
16
+ super(props);
17
+ if (!RNZeroconf) {
18
+ throw new Error('react-native-zeroconf: native module not found. Make sure the library is linked and the app rebuilt. Expo Go is not supported, use a development build instead.');
19
+ }
20
+ this._services = {};
21
+ this._publishedServices = {};
22
+ this._publishedImplTypes = {};
23
+ this._scanImplType = null;
24
+ this._dListeners = {};
25
+ this.addDeviceListeners();
26
+ }
27
+
28
+ /**
29
+ * Add all event listeners
30
+ */
31
+ addDeviceListeners() {
32
+ if (Object.keys(this._dListeners).length) {
33
+ return this.emit('error', new Error('RNZeroconf listeners already in place.'));
34
+ }
35
+ this._dListeners.start = _reactNative.DeviceEventEmitter.addListener('RNZeroconfStart', () => this.emit('start'));
36
+ this._dListeners.stop = _reactNative.DeviceEventEmitter.addListener('RNZeroconfStop', () => this.emit('stop'));
37
+ this._dListeners.error = _reactNative.DeviceEventEmitter.addListener('RNZeroconfError', err => {
38
+ if (this.listenerCount('error') > 0) {
39
+ this.emit('error', new Error(err));
40
+ }
41
+ });
42
+ this._dListeners.found = _reactNative.DeviceEventEmitter.addListener('RNZeroconfFound', service => {
43
+ if (!service || !service.name) {
44
+ return;
45
+ }
46
+ const {
47
+ name
48
+ } = service;
49
+ this._services[name] = service;
50
+ this.emit('found', name);
51
+ this.emit('update');
52
+ });
53
+ this._dListeners.remove = _reactNative.DeviceEventEmitter.addListener('RNZeroconfRemove', service => {
54
+ if (!service || !service.name) {
55
+ return;
56
+ }
57
+ const {
58
+ name
59
+ } = service;
60
+ delete this._services[name];
61
+ this.emit('remove', name);
62
+ this.emit('update');
63
+ });
64
+ this._dListeners.resolved = _reactNative.DeviceEventEmitter.addListener('RNZeroconfResolved', service => {
65
+ if (!service || !service.name) {
66
+ return;
67
+ }
68
+ this._services[service.name] = service;
69
+ this.emit('resolved', service);
70
+ this.emit('update');
71
+ });
72
+ this._dListeners.published = _reactNative.DeviceEventEmitter.addListener('RNZeroconfServiceRegistered', service => {
73
+ if (!service || !service.name) {
74
+ return;
75
+ }
76
+ this._publishedServices[service.name] = service;
77
+ this.emit('published', service);
78
+ });
79
+ this._dListeners.unpublished = _reactNative.DeviceEventEmitter.addListener('RNZeroconfServiceUnregistered', service => {
80
+ if (!service || !service.name) {
81
+ return;
82
+ }
83
+ delete this._publishedServices[service.name];
84
+ this.emit('unpublished', service);
85
+ });
86
+ }
87
+
88
+ /**
89
+ * Remove all event listeners and clean map
90
+ */
91
+ removeDeviceListeners() {
92
+ Object.keys(this._dListeners).forEach(name => this._dListeners[name].remove());
93
+ this._dListeners = {};
94
+ }
95
+
96
+ /**
97
+ * Get all the services already resolved
98
+ */
99
+ getServices() {
100
+ return this._services;
101
+ }
102
+
103
+ /**
104
+ * Scan for Zeroconf services,
105
+ * Defaults to _http._tcp. on local domain
106
+ */
107
+ scan(type = 'http', protocol = 'tcp', domain = 'local.', implType = ImplType.NSD) {
108
+ this._services = {};
109
+ this.emit('update');
110
+ if (_reactNative.Platform.OS === 'android') {
111
+ if (this._scanImplType && implType !== this._scanImplType) {
112
+ // Only one scan runs at a time, stop the one running on the other implementation
113
+ RNZeroconf.stop(this._scanImplType);
114
+ }
115
+ this._scanImplType = implType;
116
+ RNZeroconf.scan(type, protocol, domain, implType);
117
+ } else {
118
+ RNZeroconf.scan(type, protocol, domain);
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Stop current scan if any,
124
+ * Defaults to the implementation used by the last scan
125
+ */
126
+ stop(implType = this._scanImplType || ImplType.NSD) {
127
+ if (_reactNative.Platform.OS === 'android') {
128
+ RNZeroconf.stop(implType);
129
+ } else {
130
+ RNZeroconf.stop();
131
+ }
132
+ }
133
+
134
+ /**
135
+ * Publish a service
136
+ */
137
+ publishService(type, protocol, domain = 'local.', name, port, txt = {}, implType = ImplType.NSD) {
138
+ const txtRecord = Object.fromEntries(Object.entries(txt || {}).map(([key, value]) => [key, String(value)]));
139
+ if (_reactNative.Platform.OS === 'android') {
140
+ this._publishedImplTypes[name] = implType;
141
+ RNZeroconf.registerService(type, protocol, domain, name, port, txtRecord, implType);
142
+ } else {
143
+ RNZeroconf.registerService(type, protocol, domain, name, port, txtRecord);
144
+ }
145
+ }
146
+
147
+ /**
148
+ * Unpublish a service,
149
+ * Defaults to the implementation the service was published with
150
+ */
151
+ unpublishService(name, implType = this._publishedImplTypes[name] || ImplType.NSD) {
152
+ if (_reactNative.Platform.OS === 'android') {
153
+ delete this._publishedImplTypes[name];
154
+ RNZeroconf.unregisterService(name, implType);
155
+ } else {
156
+ RNZeroconf.unregisterService(name);
157
+ }
158
+ }
159
+ }
160
+ exports.default = Zeroconf;
package/index.d.ts ADDED
@@ -0,0 +1,91 @@
1
+ export declare const ImplType: {
2
+ readonly NSD: 'NSD'
3
+ readonly DNSSD: 'DNSSD'
4
+ }
5
+
6
+ /** Android only: which discovery implementation to use */
7
+ export type ImplType = (typeof ImplType)[keyof typeof ImplType]
8
+
9
+ export interface Service {
10
+ /** Human-readable service name */
11
+ name: string
12
+ /** Full service name, e.g. `XeroxPrinter.local._http._tcp.` */
13
+ fullName: string
14
+ /** Hostname, e.g. `XeroxPrinter.local.` */
15
+ host: string
16
+ port: number
17
+ /** IPv4 and/or IPv6 addresses */
18
+ addresses: string[]
19
+ /** TXT record attributes */
20
+ txt: Record<string, string>
21
+ }
22
+
23
+ export interface ZeroconfEvents {
24
+ start: () => void
25
+ stop: () => void
26
+ /** Service found, before resolution */
27
+ found: (name: string) => void
28
+ /** Service fully resolved with network info */
29
+ resolved: (service: Service) => void
30
+ /** Service removed from the network */
31
+ remove: (name: string) => void
32
+ /** Services list changed */
33
+ update: () => void
34
+ error: (error: Error) => void
35
+ published: (service: Service) => void
36
+ unpublished: (service: Service) => void
37
+ }
38
+
39
+ /** Extends the `events` package EventEmitter */
40
+ export default class Zeroconf {
41
+ constructor()
42
+
43
+ on<E extends keyof ZeroconfEvents>(event: E, listener: ZeroconfEvents[E]): this
44
+ once<E extends keyof ZeroconfEvents>(event: E, listener: ZeroconfEvents[E]): this
45
+ addListener<E extends keyof ZeroconfEvents>(event: E, listener: ZeroconfEvents[E]): this
46
+ removeListener<E extends keyof ZeroconfEvents>(event: E, listener: ZeroconfEvents[E]): this
47
+ off<E extends keyof ZeroconfEvents>(event: E, listener: ZeroconfEvents[E]): this
48
+ removeAllListeners(event?: keyof ZeroconfEvents): this
49
+ listenerCount(event: keyof ZeroconfEvents): number
50
+
51
+ /** Add the native event listeners (called automatically in the constructor) */
52
+ addDeviceListeners(): void
53
+
54
+ /** Remove the native event listeners, call it when you are done with the instance */
55
+ removeDeviceListeners(): void
56
+
57
+ /** All the services found so far, keyed by name */
58
+ getServices(): Record<string, Service>
59
+
60
+ /**
61
+ * Scan for services, defaults to `_http._tcp.` on the `local.` domain
62
+ * @param implType Android only, defaults to `NSD`
63
+ */
64
+ scan(type?: string, protocol?: string, domain?: string, implType?: ImplType): void
65
+
66
+ /**
67
+ * Stop the current scan
68
+ * @param implType Android only, defaults to the implementation used by the last scan
69
+ */
70
+ stop(implType?: ImplType): void
71
+
72
+ /**
73
+ * Publish a service. Type and protocol are passed without underscores, e.g. `('http', 'tcp', ...)`
74
+ * @param implType Android only, defaults to `NSD`
75
+ */
76
+ publishService(
77
+ type: string,
78
+ protocol: string,
79
+ domain: string | undefined,
80
+ name: string,
81
+ port: number,
82
+ txt?: Record<string, string | number | boolean>,
83
+ implType?: ImplType,
84
+ ): void
85
+
86
+ /**
87
+ * Unpublish a service
88
+ * @param implType Android only, defaults to the implementation the service was published with
89
+ */
90
+ unpublishService(name: string, implType?: ImplType): void
91
+ }
@@ -35,9 +35,13 @@ const NSString *kRNServiceTxtRecords = @"txt";
35
35
  NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
36
36
  for (NSString *key in txtRecordDict) {
37
37
  @try{
38
- dict[key] = [[NSString alloc]
39
- initWithData:txtRecordDict[key]
40
- encoding:NSASCIIStringEncoding];
38
+ NSData *value = txtRecordDict[key];
39
+ NSString *string = [[NSString alloc] initWithData:value encoding:NSUTF8StringEncoding];
40
+ if (string == nil) {
41
+ // Not valid UTF-8, fall back to a lossless 8-bit decoding
42
+ string = [[NSString alloc] initWithData:value encoding:NSISOLatin1StringEncoding];
43
+ }
44
+ dict[key] = string;
41
45
  }
42
46
  @catch(NSException *exception){
43
47
  NSLog(@"%@", exception);
@@ -106,6 +106,14 @@ RCT_EXPORT_METHOD(unregisterService:(NSString *) serviceName)
106
106
  return;
107
107
  }
108
108
 
109
+ // Stop any pending resolve for the removed service
110
+ NSNetService *resolving = self.resolvingServices[service.name];
111
+ if (resolving) {
112
+ resolving.delegate = nil;
113
+ [resolving stop];
114
+ [self.resolvingServices removeObjectForKey:service.name];
115
+ }
116
+
109
117
  NSDictionary *serviceInfo = [RNNetServiceSerializer serializeServiceToDictionary:service resolved:NO];
110
118
  [self.bridge.eventDispatcher sendDeviceEventWithName:@"RNZeroconfRemove" body:serviceInfo];
111
119
  }
package/package.json CHANGED
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "name": "react-native-zeroconf",
3
- "version": "0.13.8",
3
+ "version": "0.15.0",
4
4
  "description": "A Zeroconf discovery utility for react-native",
5
5
  "main": "dist",
6
+ "types": "index.d.ts",
6
7
  "scripts": {
7
8
  "lint": "eslint src/*.js",
9
+ "format": "prettier --write src/*.js",
8
10
  "build": "rm -rf dist && mkdir dist && babel src -o dist/index.js"
9
11
  },
10
12
  "repository": {
@@ -12,10 +14,13 @@
12
14
  "url": "git://github.com/Apercu/react-native-zeroconf.git"
13
15
  },
14
16
  "files": [
17
+ "src",
15
18
  "dist",
19
+ "index.d.ts",
16
20
  "android",
17
21
  "ios",
18
- "react-native-zeroconf.podspec"
22
+ "react-native-zeroconf.podspec",
23
+ "NOTICE"
19
24
  ],
20
25
  "keywords": [
21
26
  "react-component",
@@ -40,23 +45,26 @@
40
45
  "react-native": ">=0.60"
41
46
  },
42
47
  "devDependencies": {
43
- "babel-cli": "^6.26.0",
44
- "babel-eslint": "^10.0.3",
45
- "babel-preset-react-native": "^4.0.1",
46
- "eslint": "^6.7.2",
47
- "eslint-config-prettier": "^6.7.0",
48
- "eslint-config-zavatta": "^6.0.3",
49
- "prettier": "^1.19.1"
50
- },
51
- "eslintConfig": {
52
- "extends": [
53
- "zavatta",
54
- "prettier"
55
- ]
48
+ "@babel/cli": "^7.23.0",
49
+ "@babel/core": "^7.23.0",
50
+ "@babel/preset-env": "^7.23.0",
51
+ "@babel/preset-flow": "^7.23.0",
52
+ "eslint": "^8.57.0",
53
+ "eslint-config-prettier": "^9.1.0",
54
+ "prettier": "^3.2.0"
56
55
  },
57
56
  "babel": {
58
57
  "presets": [
59
- "react-native"
58
+ [
59
+ "@babel/preset-env",
60
+ {
61
+ "targets": {
62
+ "node": "14"
63
+ }
64
+ }
65
+ ],
66
+ "@babel/preset-flow"
60
67
  ]
61
- }
68
+ },
69
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
62
70
  }
package/src/index.js ADDED
@@ -0,0 +1,183 @@
1
+ import { Platform, NativeModules, DeviceEventEmitter } from 'react-native'
2
+ import { EventEmitter } from 'events'
3
+
4
+ const RNZeroconf = NativeModules.RNZeroconf
5
+
6
+ export const ImplType = {
7
+ NSD: 'NSD',
8
+ DNSSD: 'DNSSD',
9
+ }
10
+
11
+ export default class Zeroconf extends EventEmitter {
12
+ constructor(props) {
13
+ super(props)
14
+
15
+ if (!RNZeroconf) {
16
+ throw new Error(
17
+ 'react-native-zeroconf: native module not found. Make sure the library is linked and the app rebuilt. Expo Go is not supported, use a development build instead.',
18
+ )
19
+ }
20
+
21
+ this._services = {}
22
+ this._publishedServices = {}
23
+ this._publishedImplTypes = {}
24
+ this._scanImplType = null
25
+ this._dListeners = {}
26
+
27
+ this.addDeviceListeners()
28
+ }
29
+
30
+ /**
31
+ * Add all event listeners
32
+ */
33
+ addDeviceListeners() {
34
+ if (Object.keys(this._dListeners).length) {
35
+ return this.emit('error', new Error('RNZeroconf listeners already in place.'))
36
+ }
37
+
38
+ this._dListeners.start = DeviceEventEmitter.addListener('RNZeroconfStart', () =>
39
+ this.emit('start'),
40
+ )
41
+
42
+ this._dListeners.stop = DeviceEventEmitter.addListener('RNZeroconfStop', () =>
43
+ this.emit('stop'),
44
+ )
45
+
46
+ this._dListeners.error = DeviceEventEmitter.addListener('RNZeroconfError', err => {
47
+ if (this.listenerCount('error') > 0) {
48
+ this.emit('error', new Error(err))
49
+ }
50
+ })
51
+
52
+ this._dListeners.found = DeviceEventEmitter.addListener('RNZeroconfFound', service => {
53
+ if (!service || !service.name) {
54
+ return
55
+ }
56
+ const { name } = service
57
+
58
+ this._services[name] = service
59
+ this.emit('found', name)
60
+ this.emit('update')
61
+ })
62
+
63
+ this._dListeners.remove = DeviceEventEmitter.addListener('RNZeroconfRemove', service => {
64
+ if (!service || !service.name) {
65
+ return
66
+ }
67
+ const { name } = service
68
+
69
+ delete this._services[name]
70
+
71
+ this.emit('remove', name)
72
+ this.emit('update')
73
+ })
74
+
75
+ this._dListeners.resolved = DeviceEventEmitter.addListener('RNZeroconfResolved', service => {
76
+ if (!service || !service.name) {
77
+ return
78
+ }
79
+
80
+ this._services[service.name] = service
81
+ this.emit('resolved', service)
82
+ this.emit('update')
83
+ })
84
+
85
+ this._dListeners.published = DeviceEventEmitter.addListener(
86
+ 'RNZeroconfServiceRegistered',
87
+ service => {
88
+ if (!service || !service.name) {
89
+ return
90
+ }
91
+
92
+ this._publishedServices[service.name] = service
93
+ this.emit('published', service)
94
+ },
95
+ )
96
+
97
+ this._dListeners.unpublished = DeviceEventEmitter.addListener(
98
+ 'RNZeroconfServiceUnregistered',
99
+ service => {
100
+ if (!service || !service.name) {
101
+ return
102
+ }
103
+
104
+ delete this._publishedServices[service.name]
105
+ this.emit('unpublished', service)
106
+ },
107
+ )
108
+ }
109
+
110
+ /**
111
+ * Remove all event listeners and clean map
112
+ */
113
+ removeDeviceListeners() {
114
+ Object.keys(this._dListeners).forEach(name => this._dListeners[name].remove())
115
+ this._dListeners = {}
116
+ }
117
+
118
+ /**
119
+ * Get all the services already resolved
120
+ */
121
+ getServices() {
122
+ return this._services
123
+ }
124
+
125
+ /**
126
+ * Scan for Zeroconf services,
127
+ * Defaults to _http._tcp. on local domain
128
+ */
129
+ scan(type = 'http', protocol = 'tcp', domain = 'local.', implType = ImplType.NSD) {
130
+ this._services = {}
131
+ this.emit('update')
132
+ if (Platform.OS === 'android') {
133
+ if (this._scanImplType && implType !== this._scanImplType) {
134
+ // Only one scan runs at a time, stop the one running on the other implementation
135
+ RNZeroconf.stop(this._scanImplType)
136
+ }
137
+ this._scanImplType = implType
138
+ RNZeroconf.scan(type, protocol, domain, implType)
139
+ } else {
140
+ RNZeroconf.scan(type, protocol, domain)
141
+ }
142
+ }
143
+
144
+ /**
145
+ * Stop current scan if any,
146
+ * Defaults to the implementation used by the last scan
147
+ */
148
+ stop(implType = this._scanImplType || ImplType.NSD) {
149
+ if (Platform.OS === 'android') {
150
+ RNZeroconf.stop(implType)
151
+ } else {
152
+ RNZeroconf.stop()
153
+ }
154
+ }
155
+
156
+ /**
157
+ * Publish a service
158
+ */
159
+ publishService(type, protocol, domain = 'local.', name, port, txt = {}, implType = ImplType.NSD) {
160
+ const txtRecord = Object.fromEntries(
161
+ Object.entries(txt || {}).map(([key, value]) => [key, String(value)]),
162
+ )
163
+ if (Platform.OS === 'android') {
164
+ this._publishedImplTypes[name] = implType
165
+ RNZeroconf.registerService(type, protocol, domain, name, port, txtRecord, implType)
166
+ } else {
167
+ RNZeroconf.registerService(type, protocol, domain, name, port, txtRecord)
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Unpublish a service,
173
+ * Defaults to the implementation the service was published with
174
+ */
175
+ unpublishService(name, implType = this._publishedImplTypes[name] || ImplType.NSD) {
176
+ if (Platform.OS === 'android') {
177
+ delete this._publishedImplTypes[name]
178
+ RNZeroconf.unregisterService(name, implType)
179
+ } else {
180
+ RNZeroconf.unregisterService(name)
181
+ }
182
+ }
183
+ }