react-native-zeroconf 0.17.2 → 1.0.0-rc.1

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 (117) hide show
  1. package/NOTICE +2 -6
  2. package/README.md +1 -1
  3. package/android/CMakeLists.txt +64 -0
  4. package/android/build.gradle +1 -13
  5. package/android/generated/java/com/balthazargronon/RCTZeroconf/NativeZeroconfSpec.java +96 -0
  6. package/android/generated/jni/CMakeLists.txt +28 -0
  7. package/android/generated/jni/RNZeroconfSpec-generated.cpp +77 -0
  8. package/android/generated/jni/RNZeroconfSpec.h +31 -0
  9. package/android/generated/jni/react/renderer/components/RNZeroconfSpec/RNZeroconfSpecJSI.h +798 -0
  10. package/android/src/main/java/com/balthazargronon/RCTZeroconf/{ZeroconfModule.java → NsdHost.java} +97 -140
  11. package/android/src/main/java/com/balthazargronon/RCTZeroconf/NsdPayload.java +87 -0
  12. package/android/src/main/java/com/balthazargronon/RCTZeroconf/NsdPromise.java +40 -0
  13. package/android/src/main/java/com/balthazargronon/RCTZeroconf/Zeroconf.java +4 -6
  14. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfNativeSupport.java +60 -0
  15. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfOptions.java +15 -26
  16. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfReactPackage.java +5 -15
  17. package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/NsdServiceImpl.java +90 -96
  18. package/android/src/main/jni/mdnsresponder/mDNSPosix/PosixDaemon.c +19 -1
  19. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.c +104 -1
  20. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.h +7 -0
  21. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientshim.c +34 -9
  22. package/cpp/Backend.cpp +16 -0
  23. package/cpp/Backend.h +116 -0
  24. package/cpp/ZeroconfModule.cpp +280 -0
  25. package/cpp/ZeroconfModule.h +144 -0
  26. package/cpp/android/NsdBackend.cpp +462 -0
  27. package/cpp/android/NsdBackend.h +61 -0
  28. package/cpp/android/ZeroconfAndroidModule.cpp +49 -0
  29. package/cpp/android/ZeroconfAndroidModule.h +15 -0
  30. package/cpp/apple/DispatchExecutor.cpp +66 -0
  31. package/cpp/apple/DispatchExecutor.h +37 -0
  32. package/cpp/apple/LocalNetworkAccess.h +19 -0
  33. package/cpp/apple/LocalNetworkAccess.mm +87 -0
  34. package/cpp/dnssd/DnssdBackend.cpp +976 -0
  35. package/cpp/dnssd/DnssdBackend.h +114 -0
  36. package/cpp/dnssd/Executor.h +28 -0
  37. package/cpp/embedded/EmbeddedExecutor.cpp +124 -0
  38. package/cpp/embedded/EmbeddedExecutor.h +57 -0
  39. package/ios/ZeroconfOnLoad.mm +34 -0
  40. package/ios/generated/ReactCodegen/RNZeroconfSpec/RNZeroconfSpec-generated.mm +140 -0
  41. package/ios/generated/ReactCodegen/RNZeroconfSpec/RNZeroconfSpec.h +189 -0
  42. package/ios/generated/ReactCodegen/RNZeroconfSpecJSI.h +798 -0
  43. package/lib/module/NativeZeroconf.js +15 -0
  44. package/lib/module/NativeZeroconf.js.map +1 -0
  45. package/lib/module/bridge.js +124 -0
  46. package/lib/module/bridge.js.map +1 -0
  47. package/{dist → lib/module}/index.js +149 -149
  48. package/lib/module/index.js.map +1 -0
  49. package/lib/module/package.json +1 -0
  50. package/lib/module/types.js +24 -0
  51. package/lib/module/types.js.map +1 -0
  52. package/lib/typescript/package.json +1 -0
  53. package/lib/typescript/src/NativeZeroconf.d.ts +75 -0
  54. package/lib/typescript/src/NativeZeroconf.d.ts.map +1 -0
  55. package/lib/typescript/src/bridge.d.ts +22 -0
  56. package/lib/typescript/src/bridge.d.ts.map +1 -0
  57. package/lib/typescript/src/index.d.ts +111 -0
  58. package/lib/typescript/src/index.d.ts.map +1 -0
  59. package/lib/typescript/src/types.d.ts +175 -0
  60. package/lib/typescript/src/types.d.ts.map +1 -0
  61. package/package.json +65 -29
  62. package/react-native-zeroconf.podspec +2 -1
  63. package/react-native.config.js +17 -0
  64. package/src/NativeZeroconf.ts +120 -0
  65. package/src/bridge.ts +153 -0
  66. package/src/index.ts +607 -0
  67. package/{index.d.ts → src/types.ts} +5 -99
  68. package/windows/RNZeroconf/RNZeroconf.vcxproj +17 -2
  69. package/windows/RNZeroconf/RNZeroconf.vcxproj.filters +0 -6
  70. package/windows/RNZeroconf/ReactPackageProvider.cpp +23 -20
  71. package/windows/RNZeroconf/WindowsBackend.cpp +156 -0
  72. package/windows/RNZeroconf/WindowsBackend.h +13 -0
  73. package/windows/RNZeroconf/ZeroconfCore.cpp +2 -2
  74. package/windows/RNZeroconf/ZeroconfCore.h +2 -2
  75. package/windows/RNZeroconf/ZeroconfWindowsModule.cpp +22 -0
  76. package/windows/RNZeroconf/ZeroconfWindowsModule.h +14 -0
  77. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroConfImplFactory.java +0 -56
  78. package/android/src/main/java/com/balthazargronon/RCTZeroconf/dnssd/DnssdImpl.java +0 -654
  79. package/android/src/main/java/com/github/druk/dnssd/BaseListener.java +0 -33
  80. package/android/src/main/java/com/github/druk/dnssd/BrowseListener.java +0 -67
  81. package/android/src/main/java/com/github/druk/dnssd/DNSRecord.java +0 -47
  82. package/android/src/main/java/com/github/druk/dnssd/DNSSD.java +0 -650
  83. package/android/src/main/java/com/github/druk/dnssd/DNSSDEmbedded.java +0 -135
  84. package/android/src/main/java/com/github/druk/dnssd/DNSSDException.java +0 -66
  85. package/android/src/main/java/com/github/druk/dnssd/DNSSDRecordRegistrar.java +0 -55
  86. package/android/src/main/java/com/github/druk/dnssd/DNSSDRegistration.java +0 -54
  87. package/android/src/main/java/com/github/druk/dnssd/DNSSDService.java +0 -35
  88. package/android/src/main/java/com/github/druk/dnssd/DomainListener.java +0 -57
  89. package/android/src/main/java/com/github/druk/dnssd/InternalBrowseListener.java +0 -76
  90. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSD.java +0 -870
  91. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRecordRegistrar.java +0 -30
  92. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRegistration.java +0 -34
  93. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDService.java +0 -29
  94. package/android/src/main/java/com/github/druk/dnssd/InternalDomainListener.java +0 -62
  95. package/android/src/main/java/com/github/druk/dnssd/InternalQueryListener.java +0 -61
  96. package/android/src/main/java/com/github/druk/dnssd/InternalRegisterListener.java +0 -51
  97. package/android/src/main/java/com/github/druk/dnssd/InternalResolveListener.java +0 -58
  98. package/android/src/main/java/com/github/druk/dnssd/NSClass.java +0 -16
  99. package/android/src/main/java/com/github/druk/dnssd/NSType.java +0 -58
  100. package/android/src/main/java/com/github/druk/dnssd/QueryListener.java +0 -54
  101. package/android/src/main/java/com/github/druk/dnssd/RegisterListener.java +0 -46
  102. package/android/src/main/java/com/github/druk/dnssd/RegisterRecordListener.java +0 -35
  103. package/android/src/main/java/com/github/druk/dnssd/ResolveListener.java +0 -55
  104. package/android/src/main/java/com/github/druk/dnssd/TXTRecord.java +0 -293
  105. package/android/src/main/jni/Android.mk +0 -73
  106. package/android/src/main/jni/Application.mk +0 -3
  107. package/android/src/main/jni/DNSSD.java.h +0 -290
  108. package/android/src/main/jni/JNISupport.c +0 -1140
  109. package/ios/RNZeroconf/RNNetServiceSerializer.h +0 -31
  110. package/ios/RNZeroconf/RNNetServiceSerializer.m +0 -84
  111. package/ios/RNZeroconf/RNZeroconf.h +0 -17
  112. package/ios/RNZeroconf/RNZeroconf.m +0 -1025
  113. package/ios/RNZeroconf.xcodeproj/project.pbxproj +0 -261
  114. package/ios/RNZeroconf.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  115. package/src/index.js +0 -563
  116. package/windows/RNZeroconf/RNZeroconf.cpp +0 -228
  117. package/windows/RNZeroconf/RNZeroconf.h +0 -70
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ // The native module's interface: codegen generates its C++ spec (cpp/ZeroconfModule implements it).
4
+ // JavaScript only reaches it through src/index.ts.
5
+ import { TurboModuleRegistry } from 'react-native';
6
+
7
+ // code is a string for domain 'RNZeroconf' ('TIMEOUT'), the platform's number as a string otherwise ('-65555')
8
+
9
+ // A promise settles with one or the other: rejections would lose code and domain on some platforms
10
+
11
+ // scanId is empty for errors that are not about a scan
12
+
13
+ // Null when the module isn't in the app: Expo Go, or an app not rebuilt after installing the library
14
+ export default TurboModuleRegistry.get('Zeroconf');
15
+ //# sourceMappingURL=NativeZeroconf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeZeroconf.ts"],"mappings":";;AAAA;AACA;AACA,SAASA,mBAAmB,QAA6C,cAAc;;AAgBvF;;AAQA;;AAyBA;;AAmEA;AACA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,UAAU,CAAC","ignoreList":[]}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ // The C++ module (src/NativeZeroconf.ts) in the shapes the class works with: TXT records as pairs,
4
+ // error codes as numbers for the platform domains, and promises rejecting with { userInfo }
5
+ import NativeZeroconf from "./NativeZeroconf.js";
6
+
7
+ // Event payloads as the class handles them: scan events carry their scan id, errors are
8
+ // { message, code, domain, serviceName }
9
+
10
+ // The C++ module
11
+
12
+ // Codes are strings natively: numbers for the platform domains ('-65555'), names for the library's ('TIMEOUT')
13
+ const fromNativeError = error => ({
14
+ message: error.message,
15
+ code: error.domain === 'RNZeroconf' ? error.code : Number(error.code),
16
+ domain: error.domain,
17
+ ...(error.serviceName ? {
18
+ serviceName: error.serviceName
19
+ } : {})
20
+ });
21
+ const fromNativeService = service => ({
22
+ name: service.name,
23
+ fullName: service.fullName,
24
+ host: service.host,
25
+ port: service.port,
26
+ addresses: service.addresses,
27
+ txt: Object.fromEntries(service.txt.map(({
28
+ key,
29
+ value
30
+ }) => [key, value]))
31
+ });
32
+ const toTxtEntries = txt => txt.map(([key, value]) => ({
33
+ key,
34
+ value
35
+ }));
36
+
37
+ // A rejection carries the same payload as error events, in userInfo
38
+ const settled = async result => {
39
+ const {
40
+ service,
41
+ error
42
+ } = await result;
43
+ if (error) {
44
+ throw {
45
+ userInfo: fromNativeError(error)
46
+ };
47
+ }
48
+ return service ? fromNativeService(service) : null;
49
+ };
50
+ const turboBridge = module => ({
51
+ scan: (scanId, type, protocol, domain, implType, options) => module.scan(scanId, type, protocol, domain, implType, options),
52
+ stop: (scanId, implType) => module.stop(scanId, implType),
53
+ registerService: async (type, protocol, domain, name, port, txt, implType, options) => await settled(module.registerService(type, protocol, domain, name, port, toTxtEntries(txt), implType, options)),
54
+ updateService: async (name, txt, implType) => await settled(module.updateService(name, toTxtEntries(txt), implType)),
55
+ unregisterService: async (name, implType) => await settled(module.unregisterService(name, implType)),
56
+ resolveService: (name, type, protocol, domain, implType, options) => settled(module.resolveService(name, type, protocol, domain, implType, options)),
57
+ checkLocalNetworkAccess: async (type, timeout) => {
58
+ const {
59
+ status,
60
+ error
61
+ } = await module.checkLocalNetworkAccess(type ?? '', timeout);
62
+ if (error) {
63
+ throw {
64
+ userInfo: fromNativeError(error)
65
+ };
66
+ }
67
+ return status ?? 'unknown';
68
+ },
69
+ listen: (event, handler) => {
70
+ // An empty scan id means the event is not about a scan: it reaches every instance
71
+ const withScan = (scanId, payload) => handler(scanId ? {
72
+ ...payload,
73
+ scanId
74
+ } : payload);
75
+ switch (event) {
76
+ case 'start':
77
+ return module.onStart(({
78
+ scanId
79
+ }) => withScan(scanId, {}));
80
+ case 'stop':
81
+ return module.onStop(({
82
+ scanId
83
+ }) => withScan(scanId, {}));
84
+ case 'found':
85
+ return module.onFound(({
86
+ scanId,
87
+ name
88
+ }) => withScan(scanId, {
89
+ name
90
+ }));
91
+ case 'remove':
92
+ return module.onRemove(({
93
+ scanId,
94
+ name
95
+ }) => withScan(scanId, {
96
+ name
97
+ }));
98
+ case 'resolved':
99
+ return module.onResolved(({
100
+ scanId,
101
+ service
102
+ }) => withScan(scanId, {
103
+ ...fromNativeService(service)
104
+ }));
105
+ case 'error':
106
+ return module.onError(({
107
+ scanId,
108
+ error
109
+ }) => withScan(scanId, {
110
+ ...fromNativeError(error)
111
+ }));
112
+ case 'published':
113
+ return module.onPublished(service => handler({
114
+ ...fromNativeService(service)
115
+ }));
116
+ case 'unpublished':
117
+ return module.onUnpublished(service => handler({
118
+ ...fromNativeService(service)
119
+ }));
120
+ }
121
+ }
122
+ });
123
+ export const getBridge = () => NativeZeroconf ? turboBridge(NativeZeroconf) : null;
124
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeZeroconf","fromNativeError","error","message","code","domain","Number","serviceName","fromNativeService","service","name","fullName","host","port","addresses","txt","Object","fromEntries","map","key","value","toTxtEntries","settled","result","userInfo","turboBridge","module","scan","scanId","type","protocol","implType","options","stop","registerService","updateService","unregisterService","resolveService","checkLocalNetworkAccess","timeout","status","listen","event","handler","withScan","payload","onStart","onStop","onFound","onRemove","onResolved","onError","onPublished","onUnpublished","getBridge"],"sourceRoot":"../../src","sources":["bridge.ts"],"mappings":"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","ignoreList":[]}