react-native-zeroconf 0.17.3 → 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.
- package/NOTICE +2 -6
- package/README.md +1 -1
- package/android/CMakeLists.txt +64 -0
- package/android/build.gradle +1 -17
- package/android/generated/java/com/balthazargronon/RCTZeroconf/NativeZeroconfSpec.java +96 -0
- package/android/generated/jni/CMakeLists.txt +28 -0
- package/android/generated/jni/RNZeroconfSpec-generated.cpp +77 -0
- package/android/generated/jni/RNZeroconfSpec.h +31 -0
- package/android/generated/jni/react/renderer/components/RNZeroconfSpec/RNZeroconfSpecJSI.h +798 -0
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/{ZeroconfModule.java → NsdHost.java} +97 -140
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/NsdPayload.java +87 -0
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/NsdPromise.java +40 -0
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/Zeroconf.java +4 -6
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfNativeSupport.java +60 -0
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfOptions.java +15 -26
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfReactPackage.java +5 -15
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/NsdServiceImpl.java +90 -96
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientshim.c +31 -6
- package/cpp/Backend.cpp +16 -0
- package/cpp/Backend.h +116 -0
- package/cpp/ZeroconfModule.cpp +280 -0
- package/cpp/ZeroconfModule.h +144 -0
- package/cpp/android/NsdBackend.cpp +462 -0
- package/cpp/android/NsdBackend.h +61 -0
- package/cpp/android/ZeroconfAndroidModule.cpp +49 -0
- package/cpp/android/ZeroconfAndroidModule.h +15 -0
- package/cpp/apple/DispatchExecutor.cpp +66 -0
- package/cpp/apple/DispatchExecutor.h +37 -0
- package/cpp/apple/LocalNetworkAccess.h +19 -0
- package/cpp/apple/LocalNetworkAccess.mm +87 -0
- package/cpp/dnssd/DnssdBackend.cpp +976 -0
- package/cpp/dnssd/DnssdBackend.h +114 -0
- package/cpp/dnssd/Executor.h +28 -0
- package/cpp/embedded/EmbeddedExecutor.cpp +124 -0
- package/cpp/embedded/EmbeddedExecutor.h +57 -0
- package/ios/ZeroconfOnLoad.mm +34 -0
- package/ios/generated/ReactCodegen/RNZeroconfSpec/RNZeroconfSpec-generated.mm +140 -0
- package/ios/generated/ReactCodegen/RNZeroconfSpec/RNZeroconfSpec.h +189 -0
- package/ios/generated/ReactCodegen/RNZeroconfSpecJSI.h +798 -0
- package/lib/module/NativeZeroconf.js +15 -0
- package/lib/module/NativeZeroconf.js.map +1 -0
- package/lib/module/bridge.js +124 -0
- package/lib/module/bridge.js.map +1 -0
- package/{dist → lib/module}/index.js +149 -149
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types.js +24 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/NativeZeroconf.d.ts +75 -0
- package/lib/typescript/src/NativeZeroconf.d.ts.map +1 -0
- package/lib/typescript/src/bridge.d.ts +22 -0
- package/lib/typescript/src/bridge.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +111 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +175 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +64 -29
- package/react-native-zeroconf.podspec +2 -1
- package/react-native.config.js +17 -0
- package/src/NativeZeroconf.ts +120 -0
- package/src/bridge.ts +153 -0
- package/src/index.ts +607 -0
- package/{index.d.ts → src/types.ts} +5 -99
- package/windows/RNZeroconf/RNZeroconf.vcxproj +17 -2
- package/windows/RNZeroconf/RNZeroconf.vcxproj.filters +0 -6
- package/windows/RNZeroconf/ReactPackageProvider.cpp +23 -20
- package/windows/RNZeroconf/WindowsBackend.cpp +156 -0
- package/windows/RNZeroconf/WindowsBackend.h +13 -0
- package/windows/RNZeroconf/ZeroconfCore.cpp +2 -2
- package/windows/RNZeroconf/ZeroconfCore.h +2 -2
- package/windows/RNZeroconf/ZeroconfWindowsModule.cpp +22 -0
- package/windows/RNZeroconf/ZeroconfWindowsModule.h +14 -0
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroConfImplFactory.java +0 -56
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/dnssd/DnssdImpl.java +0 -654
- package/android/src/main/java/com/github/druk/dnssd/BaseListener.java +0 -33
- package/android/src/main/java/com/github/druk/dnssd/BrowseListener.java +0 -67
- package/android/src/main/java/com/github/druk/dnssd/DNSRecord.java +0 -47
- package/android/src/main/java/com/github/druk/dnssd/DNSSD.java +0 -681
- package/android/src/main/java/com/github/druk/dnssd/DNSSDEmbedded.java +0 -198
- package/android/src/main/java/com/github/druk/dnssd/DNSSDException.java +0 -66
- package/android/src/main/java/com/github/druk/dnssd/DNSSDRecordRegistrar.java +0 -55
- package/android/src/main/java/com/github/druk/dnssd/DNSSDRegistration.java +0 -54
- package/android/src/main/java/com/github/druk/dnssd/DNSSDService.java +0 -35
- package/android/src/main/java/com/github/druk/dnssd/DomainListener.java +0 -57
- package/android/src/main/java/com/github/druk/dnssd/InternalBrowseListener.java +0 -76
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSD.java +0 -870
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRecordRegistrar.java +0 -30
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRegistration.java +0 -34
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDService.java +0 -29
- package/android/src/main/java/com/github/druk/dnssd/InternalDomainListener.java +0 -62
- package/android/src/main/java/com/github/druk/dnssd/InternalQueryListener.java +0 -61
- package/android/src/main/java/com/github/druk/dnssd/InternalRegisterListener.java +0 -51
- package/android/src/main/java/com/github/druk/dnssd/InternalResolveListener.java +0 -58
- package/android/src/main/java/com/github/druk/dnssd/NSClass.java +0 -16
- package/android/src/main/java/com/github/druk/dnssd/NSType.java +0 -58
- package/android/src/main/java/com/github/druk/dnssd/QueryListener.java +0 -54
- package/android/src/main/java/com/github/druk/dnssd/RegisterListener.java +0 -46
- package/android/src/main/java/com/github/druk/dnssd/RegisterRecordListener.java +0 -35
- package/android/src/main/java/com/github/druk/dnssd/ResolveListener.java +0 -55
- package/android/src/main/java/com/github/druk/dnssd/TXTRecord.java +0 -293
- package/android/src/main/jni/Android.mk +0 -73
- package/android/src/main/jni/Application.mk +0 -3
- package/android/src/main/jni/DNSSD.java.h +0 -290
- package/android/src/main/jni/JNISupport.c +0 -1221
- package/ios/RNZeroconf/RNNetServiceSerializer.h +0 -31
- package/ios/RNZeroconf/RNNetServiceSerializer.m +0 -84
- package/ios/RNZeroconf/RNZeroconf.h +0 -17
- package/ios/RNZeroconf/RNZeroconf.m +0 -1025
- package/ios/RNZeroconf.xcodeproj/project.pbxproj +0 -261
- package/ios/RNZeroconf.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/src/index.js +0 -563
- package/windows/RNZeroconf/RNZeroconf.cpp +0 -228
- 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":[]}
|