react-native-zeroconf 0.17.4 → 1.0.0-rc.2

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 (115) hide show
  1. package/NOTICE +2 -6
  2. package/Package.swift +19 -3
  3. package/README.md +1 -3
  4. package/android/CMakeLists.txt +64 -0
  5. package/android/build.gradle +1 -17
  6. package/android/generated/java/com/balthazargronon/RCTZeroconf/NativeZeroconfSpec.java +96 -0
  7. package/android/generated/jni/CMakeLists.txt +28 -0
  8. package/android/generated/jni/RNZeroconfSpec-generated.cpp +77 -0
  9. package/android/generated/jni/RNZeroconfSpec.h +31 -0
  10. package/android/generated/jni/react/renderer/components/RNZeroconfSpec/RNZeroconfSpecJSI.h +798 -0
  11. package/android/src/main/java/com/balthazargronon/RCTZeroconf/{ZeroconfModule.java → NsdHost.java} +97 -140
  12. package/android/src/main/java/com/balthazargronon/RCTZeroconf/NsdPayload.java +87 -0
  13. package/android/src/main/java/com/balthazargronon/RCTZeroconf/NsdPromise.java +40 -0
  14. package/android/src/main/java/com/balthazargronon/RCTZeroconf/Zeroconf.java +4 -6
  15. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfNativeSupport.java +60 -0
  16. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfOptions.java +15 -26
  17. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfReactPackage.java +5 -15
  18. package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/NsdServiceImpl.java +90 -96
  19. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientshim.c +31 -6
  20. package/cpp/Backend.cpp +16 -0
  21. package/cpp/Backend.h +116 -0
  22. package/cpp/ZeroconfModule.cpp +280 -0
  23. package/cpp/ZeroconfModule.h +144 -0
  24. package/cpp/android/NsdBackend.cpp +462 -0
  25. package/cpp/android/NsdBackend.h +61 -0
  26. package/cpp/android/ZeroconfAndroidModule.cpp +49 -0
  27. package/cpp/android/ZeroconfAndroidModule.h +15 -0
  28. package/cpp/apple/DispatchExecutor.cpp +66 -0
  29. package/cpp/apple/DispatchExecutor.h +37 -0
  30. package/cpp/apple/LocalNetworkAccess.h +19 -0
  31. package/cpp/apple/LocalNetworkAccess.mm +87 -0
  32. package/cpp/dnssd/DnssdBackend.cpp +976 -0
  33. package/cpp/dnssd/DnssdBackend.h +114 -0
  34. package/cpp/dnssd/Executor.h +28 -0
  35. package/cpp/embedded/EmbeddedExecutor.cpp +124 -0
  36. package/cpp/embedded/EmbeddedExecutor.h +57 -0
  37. package/ios/ZeroconfOnLoad.mm +34 -0
  38. package/ios/generated/ReactCodegen/RNZeroconfSpec/RNZeroconfSpec-generated.mm +140 -0
  39. package/ios/generated/ReactCodegen/RNZeroconfSpec/RNZeroconfSpec.h +189 -0
  40. package/ios/generated/ReactCodegen/RNZeroconfSpecJSI.h +798 -0
  41. package/lib/module/NativeZeroconf.js +15 -0
  42. package/lib/module/NativeZeroconf.js.map +1 -0
  43. package/lib/module/bridge.js +124 -0
  44. package/lib/module/bridge.js.map +1 -0
  45. package/{dist → lib/module}/index.js +149 -149
  46. package/lib/module/index.js.map +1 -0
  47. package/lib/module/package.json +1 -0
  48. package/lib/module/types.js +24 -0
  49. package/lib/module/types.js.map +1 -0
  50. package/lib/typescript/package.json +1 -0
  51. package/lib/typescript/src/NativeZeroconf.d.ts +75 -0
  52. package/lib/typescript/src/NativeZeroconf.d.ts.map +1 -0
  53. package/lib/typescript/src/bridge.d.ts +22 -0
  54. package/lib/typescript/src/bridge.d.ts.map +1 -0
  55. package/lib/typescript/src/index.d.ts +111 -0
  56. package/lib/typescript/src/index.d.ts.map +1 -0
  57. package/lib/typescript/src/types.d.ts +175 -0
  58. package/lib/typescript/src/types.d.ts.map +1 -0
  59. package/package.json +64 -29
  60. package/react-native-zeroconf.podspec +2 -1
  61. package/react-native.config.js +17 -0
  62. package/src/NativeZeroconf.ts +120 -0
  63. package/src/bridge.ts +153 -0
  64. package/src/index.ts +607 -0
  65. package/{index.d.ts → src/types.ts} +5 -99
  66. package/windows/RNZeroconf/RNZeroconf.vcxproj +17 -2
  67. package/windows/RNZeroconf/RNZeroconf.vcxproj.filters +0 -6
  68. package/windows/RNZeroconf/ReactPackageProvider.cpp +23 -20
  69. package/windows/RNZeroconf/WindowsBackend.cpp +156 -0
  70. package/windows/RNZeroconf/WindowsBackend.h +13 -0
  71. package/windows/RNZeroconf/ZeroconfCore.cpp +2 -2
  72. package/windows/RNZeroconf/ZeroconfCore.h +2 -2
  73. package/windows/RNZeroconf/ZeroconfWindowsModule.cpp +22 -0
  74. package/windows/RNZeroconf/ZeroconfWindowsModule.h +14 -0
  75. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroConfImplFactory.java +0 -56
  76. package/android/src/main/java/com/balthazargronon/RCTZeroconf/dnssd/DnssdImpl.java +0 -654
  77. package/android/src/main/java/com/github/druk/dnssd/BaseListener.java +0 -33
  78. package/android/src/main/java/com/github/druk/dnssd/BrowseListener.java +0 -67
  79. package/android/src/main/java/com/github/druk/dnssd/DNSRecord.java +0 -47
  80. package/android/src/main/java/com/github/druk/dnssd/DNSSD.java +0 -681
  81. package/android/src/main/java/com/github/druk/dnssd/DNSSDEmbedded.java +0 -198
  82. package/android/src/main/java/com/github/druk/dnssd/DNSSDException.java +0 -66
  83. package/android/src/main/java/com/github/druk/dnssd/DNSSDRecordRegistrar.java +0 -55
  84. package/android/src/main/java/com/github/druk/dnssd/DNSSDRegistration.java +0 -54
  85. package/android/src/main/java/com/github/druk/dnssd/DNSSDService.java +0 -35
  86. package/android/src/main/java/com/github/druk/dnssd/DomainListener.java +0 -57
  87. package/android/src/main/java/com/github/druk/dnssd/InternalBrowseListener.java +0 -76
  88. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSD.java +0 -870
  89. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRecordRegistrar.java +0 -30
  90. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRegistration.java +0 -34
  91. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDService.java +0 -29
  92. package/android/src/main/java/com/github/druk/dnssd/InternalDomainListener.java +0 -62
  93. package/android/src/main/java/com/github/druk/dnssd/InternalQueryListener.java +0 -61
  94. package/android/src/main/java/com/github/druk/dnssd/InternalRegisterListener.java +0 -51
  95. package/android/src/main/java/com/github/druk/dnssd/InternalResolveListener.java +0 -58
  96. package/android/src/main/java/com/github/druk/dnssd/NSClass.java +0 -16
  97. package/android/src/main/java/com/github/druk/dnssd/NSType.java +0 -58
  98. package/android/src/main/java/com/github/druk/dnssd/QueryListener.java +0 -54
  99. package/android/src/main/java/com/github/druk/dnssd/RegisterListener.java +0 -46
  100. package/android/src/main/java/com/github/druk/dnssd/RegisterRecordListener.java +0 -35
  101. package/android/src/main/java/com/github/druk/dnssd/ResolveListener.java +0 -55
  102. package/android/src/main/java/com/github/druk/dnssd/TXTRecord.java +0 -293
  103. package/android/src/main/jni/Android.mk +0 -73
  104. package/android/src/main/jni/Application.mk +0 -3
  105. package/android/src/main/jni/DNSSD.java.h +0 -290
  106. package/android/src/main/jni/JNISupport.c +0 -1221
  107. package/ios/RNZeroconf/RNNetServiceSerializer.h +0 -31
  108. package/ios/RNZeroconf/RNNetServiceSerializer.m +0 -84
  109. package/ios/RNZeroconf/RNZeroconf.h +0 -17
  110. package/ios/RNZeroconf/RNZeroconf.m +0 -1025
  111. package/ios/RNZeroconf.xcodeproj/project.pbxproj +0 -261
  112. package/ios/RNZeroconf.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  113. package/src/index.js +0 -563
  114. package/windows/RNZeroconf/RNZeroconf.cpp +0 -228
  115. 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":[]}