@candypoets/nipworker 0.96.3 → 0.96.5
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/README.md +206 -73
- package/crates/native-ffi/README.md +14 -151
- package/crates/native-ffi/ios/README.md +4 -50
- package/crates/native-ffi/react-native/README.md +8 -7
- package/crates/native-ffi/react-native/android/build.gradle +1 -0
- package/crates/native-ffi/react-native/android/src/main/cpp/NipworkerByteRuntime.cpp +348 -0
- package/crates/native-ffi/react-native/android/src/main/java/com/candypoets/nipworker/reactnative/NipworkerHooks.kt +292 -0
- package/crates/native-ffi/react-native/android/src/main/java/com/candypoets/nipworker/reactnative/NipworkerReactNativeModule.kt +283 -89
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/AddressPointer.java +75 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleBlock.java +102 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleBlockType.java +23 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleEntity.java +80 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleInline.java +85 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleInlineType.java +24 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/BadgeAwardRecipient.java +61 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/BufferFull.java +52 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CacheInput.java +16 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CacheInputMessage.java +57 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CacheRequest.java +84 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CacheResponse.java +67 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CashuData.java +55 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ChatLimiterPipeConfig.java +74 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CodeData.java +61 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ConnectionStatus.java +68 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Contact.java +70 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ContentBlock.java +70 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ContentData.java +23 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Coordinate.java +75 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CountResponse.java +60 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CounterPipeConfig.java +67 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/DLEQProof.java +69 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Emoji.java +62 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/EmojiData.java +68 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Eoce.java +55 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/EventPointer.java +74 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/GetPublicKey.java +43 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/HTLCWitness.java +64 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/HashtagData.java +55 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/HistoryTag.java +74 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ImageData.java +67 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ImetaTag.java +100 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind0Parsed.java +168 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind10002Parsed.java +59 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind10019Parsed.java +73 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1018Parsed.java +79 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1068Parsed.java +107 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1111Parsed.java +159 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1311Parsed.java +91 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind17375Parsed.java +74 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind17Parsed.java +81 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1Parsed.java +109 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind20Parsed.java +107 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind22Parsed.java +111 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind30023Parsed.java +113 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind3Parsed.java +59 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind4Parsed.java +78 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind6Parsed.java +53 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind7374Parsed.java +66 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind7375Parsed.java +79 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind7376Parsed.java +100 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind7Parsed.java +81 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind8Parsed.java +78 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind9321Parsed.java +117 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind9735Parsed.java +119 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/KindFilterPipeConfig.java +60 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/LinkPreviewData.java +73 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ListParsed.java +123 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/LiveActivityRef.java +72 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/LiveChatParticipant.java +61 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/LiveChatThreadRef.java +61 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MainContent.java +20 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MainMessage.java +57 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MediaGroupData.java +58 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MediaItem.java +58 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Message.java +24 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MessageType.java +19 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MintInfo.java +65 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MintProofs.java +66 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MuteFilterPipeConfig.java +84 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Nip07.java +43 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Nip46Bunker.java +61 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Nip46QR.java +61 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/NostrData.java +81 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/NostrEvent.java +95 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/NpubLimiterKey.java +15 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/NpubLimiterPipeConfig.java +64 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/P2PKWitness.java +57 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ParsePipeConfig.java +43 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ParsedData.java +39 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ParsedDataUnion.java +35 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ParsedEvent.java +108 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Pipe.java +57 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PipeConfig.java +23 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PipelineConfig.java +59 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PollOption.java +62 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PollType.java +15 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PreGenericParsed.java +213 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PreParticipant.java +73 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PreRefEvent.java +67 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PrivateKey.java +55 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ProfilePointer.java +64 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Proof.java +90 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ProofVerificationPipeConfig.java +52 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Pubkey.java +55 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Publish.java +80 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Raw.java +55 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ReactionType.java +17 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/RelayInfo.java +63 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Request.java +134 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SaveToDbPipeConfig.java +43 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SerializeEventsPipeConfig.java +55 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SetSigner.java +57 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignEvent.java +54 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignedEvent.java +54 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignerOp.java +19 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignerRequest.java +80 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignerResponse.java +64 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignerType.java +18 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/StringVec.java +57 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Subscribe.java +72 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SubscribeKind.java +19 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SubscriptionConfig.java +95 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Tag.java +64 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Template.java +74 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Unsubscribe.java +55 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ValidProofs.java +59 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/VideoData.java +67 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/VideoVariant.java +102 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Witness.java +17 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/WitnessString.java +54 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/WorkerMessage.java +74 -0
- package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ZapRequest.java +83 -0
- package/crates/native-ffi/react-native/ios/NipworkerReactNativeModule.h +18 -0
- package/crates/native-ffi/react-native/ios/NipworkerReactNativeModule.mm +263 -8
- package/dist/EngineManager.d.ts +1 -0
- package/dist/EngineManager.d.ts.map +1 -1
- package/dist/EngineManager.js +143 -137
- package/dist/NostrManager.d.ts +1 -0
- package/dist/NostrManager.d.ts.map +1 -1
- package/dist/NostrManager.js +49 -44
- package/dist/connections/index.js +87 -87
- package/dist/engine/index.js +119 -119
- package/dist/engine.d.ts.map +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +27 -26
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/legacy.d.ts.map +1 -1
- package/dist/lib/ArrayBufferReader.d.ts +2 -1
- package/dist/lib/ArrayBufferReader.d.ts.map +1 -1
- package/dist/lib/BaseBackend.d.ts +5 -3
- package/dist/lib/BaseBackend.d.ts.map +1 -1
- package/dist/manager.d.ts +2 -6
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +10 -28
- package/dist/react-native.d.ts +33 -4
- package/dist/react-native.d.ts.map +1 -1
- package/dist/react-native.js +400 -122
- package/dist/scheduleMicrotask.js +58 -50
- package/package.json +13 -11
- package/swift/Package.swift +36 -0
- package/swift/README.md +438 -0
- package/swift/Sources/NipworkerSwift/ArrayBufferReader.swift +136 -0
- package/swift/Sources/NipworkerSwift/AuthSession.swift +24 -0
- package/swift/Sources/NipworkerSwift/FFI.swift +94 -0
- package/swift/Sources/NipworkerSwift/FlatBufferHelpers.swift +273 -0
- package/swift/Sources/NipworkerSwift/Generated/message_generated.swift +6530 -0
- package/swift/Sources/NipworkerSwift/Hooks.swift +300 -0
- package/swift/Sources/NipworkerSwift/Models.swift +156 -0
- package/swift/Sources/NipworkerSwift/NostrManager.swift +594 -0
- package/swift/Sources/NipworkerSwift/PublishTracker.swift +40 -0
- package/swift/Sources/NipworkerSwift/Subscription.swift +44 -0
- package/swift/Sources/NipworkerSwift/WorkerMessageView.swift +145 -0
- package/dist/NativeBackend.d.ts +0 -53
- package/dist/NativeBackend.d.ts.map +0 -1
- package/dist/NativeBackend.js +0 -464
- package/dist/native.d.ts +0 -29
- package/dist/native.d.ts.map +0 -1
- package/dist/native.js +0 -273
|
@@ -24,14 +24,25 @@ void* nipworker_init(void (*callback)(void* userdata, const uint8_t* ptr, size_t
|
|
|
24
24
|
void* nipworker_init_with_storage_path(void (*callback)(void* userdata, const uint8_t* ptr, size_t len), void* userdata, const char* storage_path);
|
|
25
25
|
void* nipworker_init_with_config(void (*callback)(void* userdata, const uint8_t* ptr, size_t len), void* userdata, const char* storage_path, const char* default_relays, const char* indexer_relays);
|
|
26
26
|
void nipworker_handle_message(void* handle, const uint8_t* ptr, size_t len);
|
|
27
|
+
bool nipworker_subscribe_message(void* handle, const uint8_t* ptr, size_t len);
|
|
28
|
+
bool nipworker_publish_message(void* handle, const uint8_t* ptr, size_t len);
|
|
27
29
|
void nipworker_set_private_key(void* handle, const char* ptr);
|
|
28
30
|
void nipworker_wake(void* handle);
|
|
29
31
|
void nipworker_deinit(void* handle);
|
|
30
32
|
void nipworker_free_bytes(uint8_t* ptr, size_t len);
|
|
33
|
+
bool nipworker_register_subscription(void* handle, const char* sub_id, size_t buffer_size);
|
|
34
|
+
bool nipworker_register_publish_buffer(void* handle, const char* publish_id, size_t buffer_size);
|
|
35
|
+
bool nipworker_retain_subscription(void* handle, const char* sub_id);
|
|
36
|
+
void nipworker_release_subscription(void* handle, const char* sub_id);
|
|
37
|
+
uint8_t* nipworker_subscription_buffer_ptr(void* handle, const char* sub_id);
|
|
38
|
+
size_t nipworker_subscription_buffer_len(void* handle, const char* sub_id);
|
|
39
|
+
void nipworker_cleanup_subscriptions(void* handle);
|
|
31
40
|
}
|
|
32
41
|
|
|
33
42
|
static NSString * const NipworkerEventName = @"NipworkerEvent";
|
|
34
43
|
static NSString * const NipworkerStoragePrefix = @"nipworker.";
|
|
44
|
+
NSNotificationName const NipworkerRuntimeDataNotification = @"NipworkerRuntimeDataNotification";
|
|
45
|
+
NSString * const NipworkerRuntimeDataKey = @"data";
|
|
35
46
|
static std::mutex NipworkerQueuedPacketsMutex;
|
|
36
47
|
static std::vector<std::vector<uint8_t>> NipworkerQueuedPackets;
|
|
37
48
|
static std::atomic_bool NipworkerByteRuntimeInstalled(false);
|
|
@@ -109,6 +120,10 @@ static NSString* NipworkerStorageDirectory(void) {
|
|
|
109
120
|
return [dirURL path];
|
|
110
121
|
}
|
|
111
122
|
|
|
123
|
+
void *nipworker_react_native_shared_handle(void) {
|
|
124
|
+
return NipworkerGetEngineHandleDefault(NULL);
|
|
125
|
+
}
|
|
126
|
+
|
|
112
127
|
static void NipworkerNotifyQueuedPacket(void) {
|
|
113
128
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
114
129
|
NSArray<NipworkerReactNativeModule*>* listeners = nil;
|
|
@@ -140,6 +155,23 @@ private:
|
|
|
140
155
|
std::vector<uint8_t> bytes_;
|
|
141
156
|
};
|
|
142
157
|
|
|
158
|
+
class NipworkerExternalMutableBuffer final : public facebook::jsi::MutableBuffer {
|
|
159
|
+
public:
|
|
160
|
+
NipworkerExternalMutableBuffer(uint8_t* ptr, size_t len) : ptr_(ptr), len_(len) {}
|
|
161
|
+
|
|
162
|
+
size_t size() const override {
|
|
163
|
+
return len_;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
uint8_t* data() override {
|
|
167
|
+
return ptr_;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
private:
|
|
171
|
+
uint8_t* ptr_;
|
|
172
|
+
size_t len_;
|
|
173
|
+
};
|
|
174
|
+
|
|
143
175
|
static void NipworkerInstallByteRuntime(facebook::jsi::Runtime& runtime, void* engineHandle) {
|
|
144
176
|
facebook::jsi::Object byteRuntime(runtime);
|
|
145
177
|
byteRuntime.setProperty(
|
|
@@ -201,6 +233,190 @@ static void NipworkerInstallByteRuntime(facebook::jsi::Runtime& runtime, void* e
|
|
|
201
233
|
}
|
|
202
234
|
)
|
|
203
235
|
);
|
|
236
|
+
byteRuntime.setProperty(
|
|
237
|
+
runtime,
|
|
238
|
+
"registerSubscription",
|
|
239
|
+
facebook::jsi::Function::createFromHostFunction(
|
|
240
|
+
runtime,
|
|
241
|
+
facebook::jsi::PropNameID::forAscii(runtime, "registerSubscription"),
|
|
242
|
+
2,
|
|
243
|
+
[engineHandle](facebook::jsi::Runtime& runtime, const facebook::jsi::Value&, const facebook::jsi::Value* args, size_t count) {
|
|
244
|
+
if (count < 2 || !args[0].isString() || !args[1].isNumber()) {
|
|
245
|
+
return facebook::jsi::Value(false);
|
|
246
|
+
}
|
|
247
|
+
std::string subId = args[0].asString(runtime).utf8(runtime);
|
|
248
|
+
auto bufferSize = static_cast<size_t>(args[1].asNumber());
|
|
249
|
+
return facebook::jsi::Value(nipworker_register_subscription(engineHandle, subId.c_str(), bufferSize));
|
|
250
|
+
}
|
|
251
|
+
)
|
|
252
|
+
);
|
|
253
|
+
byteRuntime.setProperty(
|
|
254
|
+
runtime,
|
|
255
|
+
"registerPublishBuffer",
|
|
256
|
+
facebook::jsi::Function::createFromHostFunction(
|
|
257
|
+
runtime,
|
|
258
|
+
facebook::jsi::PropNameID::forAscii(runtime, "registerPublishBuffer"),
|
|
259
|
+
2,
|
|
260
|
+
[engineHandle](facebook::jsi::Runtime& runtime, const facebook::jsi::Value&, const facebook::jsi::Value* args, size_t count) {
|
|
261
|
+
if (count < 2 || !args[0].isString() || !args[1].isNumber()) {
|
|
262
|
+
return facebook::jsi::Value(false);
|
|
263
|
+
}
|
|
264
|
+
std::string publishId = args[0].asString(runtime).utf8(runtime);
|
|
265
|
+
auto bufferSize = static_cast<size_t>(args[1].asNumber());
|
|
266
|
+
return facebook::jsi::Value(nipworker_register_publish_buffer(engineHandle, publishId.c_str(), bufferSize));
|
|
267
|
+
}
|
|
268
|
+
)
|
|
269
|
+
);
|
|
270
|
+
byteRuntime.setProperty(
|
|
271
|
+
runtime,
|
|
272
|
+
"subscribe",
|
|
273
|
+
facebook::jsi::Function::createFromHostFunction(
|
|
274
|
+
runtime,
|
|
275
|
+
facebook::jsi::PropNameID::forAscii(runtime, "subscribe"),
|
|
276
|
+
2,
|
|
277
|
+
[engineHandle](facebook::jsi::Runtime& runtime, const facebook::jsi::Value&, const facebook::jsi::Value* args, size_t count) {
|
|
278
|
+
if (count < 2 || !args[0].isObject() || !args[0].asObject(runtime).isArrayBuffer(runtime) || !args[1].isString()) {
|
|
279
|
+
return facebook::jsi::Value::undefined();
|
|
280
|
+
}
|
|
281
|
+
facebook::jsi::ArrayBuffer message = args[0].asObject(runtime).getArrayBuffer(runtime);
|
|
282
|
+
std::string subId = args[1].asString(runtime).utf8(runtime);
|
|
283
|
+
if (!nipworker_subscribe_message(engineHandle, message.data(runtime), message.size(runtime))) {
|
|
284
|
+
return facebook::jsi::Value::undefined();
|
|
285
|
+
}
|
|
286
|
+
uint8_t* ptr = nipworker_subscription_buffer_ptr(engineHandle, subId.c_str());
|
|
287
|
+
size_t len = nipworker_subscription_buffer_len(engineHandle, subId.c_str());
|
|
288
|
+
if (!ptr || len == 0) {
|
|
289
|
+
return facebook::jsi::Value::undefined();
|
|
290
|
+
}
|
|
291
|
+
auto nativeBuffer = std::make_shared<NipworkerExternalMutableBuffer>(ptr, len);
|
|
292
|
+
facebook::jsi::ArrayBuffer buffer(runtime, std::move(nativeBuffer));
|
|
293
|
+
return facebook::jsi::Value(runtime, std::move(buffer));
|
|
294
|
+
}
|
|
295
|
+
)
|
|
296
|
+
);
|
|
297
|
+
byteRuntime.setProperty(
|
|
298
|
+
runtime,
|
|
299
|
+
"publish",
|
|
300
|
+
facebook::jsi::Function::createFromHostFunction(
|
|
301
|
+
runtime,
|
|
302
|
+
facebook::jsi::PropNameID::forAscii(runtime, "publish"),
|
|
303
|
+
2,
|
|
304
|
+
[engineHandle](facebook::jsi::Runtime& runtime, const facebook::jsi::Value&, const facebook::jsi::Value* args, size_t count) {
|
|
305
|
+
if (count < 2 || !args[0].isObject() || !args[0].asObject(runtime).isArrayBuffer(runtime) || !args[1].isString()) {
|
|
306
|
+
return facebook::jsi::Value::undefined();
|
|
307
|
+
}
|
|
308
|
+
facebook::jsi::ArrayBuffer message = args[0].asObject(runtime).getArrayBuffer(runtime);
|
|
309
|
+
std::string publishId = args[1].asString(runtime).utf8(runtime);
|
|
310
|
+
if (!nipworker_publish_message(engineHandle, message.data(runtime), message.size(runtime))) {
|
|
311
|
+
return facebook::jsi::Value::undefined();
|
|
312
|
+
}
|
|
313
|
+
uint8_t* ptr = nipworker_subscription_buffer_ptr(engineHandle, publishId.c_str());
|
|
314
|
+
size_t len = nipworker_subscription_buffer_len(engineHandle, publishId.c_str());
|
|
315
|
+
if (!ptr || len == 0) {
|
|
316
|
+
return facebook::jsi::Value::undefined();
|
|
317
|
+
}
|
|
318
|
+
auto nativeBuffer = std::make_shared<NipworkerExternalMutableBuffer>(ptr, len);
|
|
319
|
+
facebook::jsi::ArrayBuffer buffer(runtime, std::move(nativeBuffer));
|
|
320
|
+
return facebook::jsi::Value(runtime, std::move(buffer));
|
|
321
|
+
}
|
|
322
|
+
)
|
|
323
|
+
);
|
|
324
|
+
byteRuntime.setProperty(
|
|
325
|
+
runtime,
|
|
326
|
+
"retainSubscription",
|
|
327
|
+
facebook::jsi::Function::createFromHostFunction(
|
|
328
|
+
runtime,
|
|
329
|
+
facebook::jsi::PropNameID::forAscii(runtime, "retainSubscription"),
|
|
330
|
+
1,
|
|
331
|
+
[engineHandle](facebook::jsi::Runtime& runtime, const facebook::jsi::Value&, const facebook::jsi::Value* args, size_t count) {
|
|
332
|
+
if (count < 1 || !args[0].isString()) {
|
|
333
|
+
return facebook::jsi::Value(false);
|
|
334
|
+
}
|
|
335
|
+
std::string subId = args[0].asString(runtime).utf8(runtime);
|
|
336
|
+
return facebook::jsi::Value(nipworker_retain_subscription(engineHandle, subId.c_str()));
|
|
337
|
+
}
|
|
338
|
+
)
|
|
339
|
+
);
|
|
340
|
+
byteRuntime.setProperty(
|
|
341
|
+
runtime,
|
|
342
|
+
"retainSubscriptionBuffer",
|
|
343
|
+
facebook::jsi::Function::createFromHostFunction(
|
|
344
|
+
runtime,
|
|
345
|
+
facebook::jsi::PropNameID::forAscii(runtime, "retainSubscriptionBuffer"),
|
|
346
|
+
1,
|
|
347
|
+
[engineHandle](facebook::jsi::Runtime& runtime, const facebook::jsi::Value&, const facebook::jsi::Value* args, size_t count) {
|
|
348
|
+
if (count < 1 || !args[0].isString()) {
|
|
349
|
+
return facebook::jsi::Value::undefined();
|
|
350
|
+
}
|
|
351
|
+
std::string subId = args[0].asString(runtime).utf8(runtime);
|
|
352
|
+
if (!nipworker_retain_subscription(engineHandle, subId.c_str())) {
|
|
353
|
+
return facebook::jsi::Value::undefined();
|
|
354
|
+
}
|
|
355
|
+
uint8_t* ptr = nipworker_subscription_buffer_ptr(engineHandle, subId.c_str());
|
|
356
|
+
size_t len = nipworker_subscription_buffer_len(engineHandle, subId.c_str());
|
|
357
|
+
if (!ptr || len == 0) {
|
|
358
|
+
nipworker_release_subscription(engineHandle, subId.c_str());
|
|
359
|
+
return facebook::jsi::Value::undefined();
|
|
360
|
+
}
|
|
361
|
+
auto nativeBuffer = std::make_shared<NipworkerExternalMutableBuffer>(ptr, len);
|
|
362
|
+
facebook::jsi::ArrayBuffer buffer(runtime, std::move(nativeBuffer));
|
|
363
|
+
return facebook::jsi::Value(runtime, std::move(buffer));
|
|
364
|
+
}
|
|
365
|
+
)
|
|
366
|
+
);
|
|
367
|
+
byteRuntime.setProperty(
|
|
368
|
+
runtime,
|
|
369
|
+
"releaseSubscription",
|
|
370
|
+
facebook::jsi::Function::createFromHostFunction(
|
|
371
|
+
runtime,
|
|
372
|
+
facebook::jsi::PropNameID::forAscii(runtime, "releaseSubscription"),
|
|
373
|
+
1,
|
|
374
|
+
[engineHandle](facebook::jsi::Runtime& runtime, const facebook::jsi::Value&, const facebook::jsi::Value* args, size_t count) {
|
|
375
|
+
if (count < 1 || !args[0].isString()) {
|
|
376
|
+
return facebook::jsi::Value::undefined();
|
|
377
|
+
}
|
|
378
|
+
std::string subId = args[0].asString(runtime).utf8(runtime);
|
|
379
|
+
nipworker_release_subscription(engineHandle, subId.c_str());
|
|
380
|
+
return facebook::jsi::Value::undefined();
|
|
381
|
+
}
|
|
382
|
+
)
|
|
383
|
+
);
|
|
384
|
+
byteRuntime.setProperty(
|
|
385
|
+
runtime,
|
|
386
|
+
"getSubscriptionBuffer",
|
|
387
|
+
facebook::jsi::Function::createFromHostFunction(
|
|
388
|
+
runtime,
|
|
389
|
+
facebook::jsi::PropNameID::forAscii(runtime, "getSubscriptionBuffer"),
|
|
390
|
+
1,
|
|
391
|
+
[engineHandle](facebook::jsi::Runtime& runtime, const facebook::jsi::Value&, const facebook::jsi::Value* args, size_t count) {
|
|
392
|
+
if (count < 1 || !args[0].isString()) {
|
|
393
|
+
return facebook::jsi::Value::undefined();
|
|
394
|
+
}
|
|
395
|
+
std::string subId = args[0].asString(runtime).utf8(runtime);
|
|
396
|
+
uint8_t* ptr = nipworker_subscription_buffer_ptr(engineHandle, subId.c_str());
|
|
397
|
+
size_t len = nipworker_subscription_buffer_len(engineHandle, subId.c_str());
|
|
398
|
+
if (!ptr || len == 0) {
|
|
399
|
+
return facebook::jsi::Value::undefined();
|
|
400
|
+
}
|
|
401
|
+
auto nativeBuffer = std::make_shared<NipworkerExternalMutableBuffer>(ptr, len);
|
|
402
|
+
facebook::jsi::ArrayBuffer buffer(runtime, std::move(nativeBuffer));
|
|
403
|
+
return facebook::jsi::Value(runtime, std::move(buffer));
|
|
404
|
+
}
|
|
405
|
+
)
|
|
406
|
+
);
|
|
407
|
+
byteRuntime.setProperty(
|
|
408
|
+
runtime,
|
|
409
|
+
"cleanupSubscriptions",
|
|
410
|
+
facebook::jsi::Function::createFromHostFunction(
|
|
411
|
+
runtime,
|
|
412
|
+
facebook::jsi::PropNameID::forAscii(runtime, "cleanupSubscriptions"),
|
|
413
|
+
0,
|
|
414
|
+
[engineHandle](facebook::jsi::Runtime&, const facebook::jsi::Value&, const facebook::jsi::Value*, size_t) {
|
|
415
|
+
nipworker_cleanup_subscriptions(engineHandle);
|
|
416
|
+
return facebook::jsi::Value::undefined();
|
|
417
|
+
}
|
|
418
|
+
)
|
|
419
|
+
);
|
|
204
420
|
byteRuntime.setProperty(
|
|
205
421
|
runtime,
|
|
206
422
|
"deinit",
|
|
@@ -246,6 +462,12 @@ static void NipworkerReactNativeCallbackForwarder(void* userdata, const uint8_t*
|
|
|
246
462
|
NSData* data = [NSData dataWithBytes:ptr length:len];
|
|
247
463
|
nipworker_free_bytes((uint8_t*)ptr, len);
|
|
248
464
|
|
|
465
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
466
|
+
[[NSNotificationCenter defaultCenter] postNotificationName:NipworkerRuntimeDataNotification
|
|
467
|
+
object:nil
|
|
468
|
+
userInfo:@{ NipworkerRuntimeDataKey: data }];
|
|
469
|
+
});
|
|
470
|
+
|
|
249
471
|
if (module.byteRuntimeInstalled || NipworkerByteRuntimeInstalled.load()) {
|
|
250
472
|
NipworkerQueuePacket((const uint8_t*)data.bytes, data.length);
|
|
251
473
|
NipworkerNotifyQueuedPacket();
|
|
@@ -267,6 +489,41 @@ static void NipworkerReactNativeCallbackForwarder(void* userdata, const uint8_t*
|
|
|
267
489
|
});
|
|
268
490
|
}
|
|
269
491
|
|
|
492
|
+
@implementation NipworkerRuntime
|
|
493
|
+
|
|
494
|
+
+ (void *)sharedHandle {
|
|
495
|
+
return NipworkerGetEngineHandleDefault(NULL);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
+ (void *)sharedHandleWithDefaultRelays:(NSArray<NSString *> *)defaultRelays
|
|
499
|
+
indexerRelays:(NSArray<NSString *> *)indexerRelays
|
|
500
|
+
userdata:(void *)userdata {
|
|
501
|
+
return NipworkerGetEngineHandle(userdata, defaultRelays, indexerRelays);
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
+ (void)handleMessage:(NSData *)data {
|
|
505
|
+
void* handle = NipworkerGetEngineHandleDefault(NULL);
|
|
506
|
+
if (handle && data.length > 0) {
|
|
507
|
+
nipworker_handle_message(handle, (const uint8_t*)data.bytes, data.length);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
+ (void)setPrivateKey:(NSString *)secret {
|
|
512
|
+
void* handle = NipworkerGetEngineHandleDefault(NULL);
|
|
513
|
+
if (handle && secret) {
|
|
514
|
+
nipworker_set_private_key(handle, [secret UTF8String]);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
+ (void)wake {
|
|
519
|
+
void* handle = NipworkerGetEngineHandleDefault(NULL);
|
|
520
|
+
if (handle) {
|
|
521
|
+
nipworker_wake(handle);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
@end
|
|
526
|
+
|
|
270
527
|
@implementation NipworkerReactNativeModule
|
|
271
528
|
|
|
272
529
|
RCT_EXPORT_MODULE(NipworkerReactNativeModule)
|
|
@@ -314,7 +571,9 @@ RCT_EXPORT_MODULE(NipworkerReactNativeModule)
|
|
|
314
571
|
}
|
|
315
572
|
|
|
316
573
|
RCT_EXPORT_METHOD(initEngine:(NSArray<NSString *> *)defaultRelays indexerRelays:(NSArray<NSString *> *)indexerRelays) {
|
|
317
|
-
self.engineHandle =
|
|
574
|
+
self.engineHandle = [NipworkerRuntime sharedHandleWithDefaultRelays:defaultRelays
|
|
575
|
+
indexerRelays:indexerRelays
|
|
576
|
+
userdata:(__bridge void*)self];
|
|
318
577
|
}
|
|
319
578
|
|
|
320
579
|
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(installByteRuntime) {
|
|
@@ -349,20 +608,16 @@ RCT_EXPORT_METHOD(handleMessage:(NSArray<NSNumber *> *)bytes) {
|
|
|
349
608
|
for (NSUInteger i = 0; i < bytes.count; i++) {
|
|
350
609
|
rawBytes[i] = (uint8_t)(bytes[i].unsignedCharValue);
|
|
351
610
|
}
|
|
352
|
-
|
|
611
|
+
[NipworkerRuntime handleMessage:data];
|
|
353
612
|
}
|
|
354
613
|
}
|
|
355
614
|
|
|
356
615
|
RCT_EXPORT_METHOD(setPrivateKey:(NSString *)secret) {
|
|
357
|
-
|
|
358
|
-
nipworker_set_private_key(self.engineHandle, [secret UTF8String]);
|
|
359
|
-
}
|
|
616
|
+
[NipworkerRuntime setPrivateKey:secret];
|
|
360
617
|
}
|
|
361
618
|
|
|
362
619
|
RCT_EXPORT_METHOD(wake) {
|
|
363
|
-
|
|
364
|
-
nipworker_wake(self.engineHandle);
|
|
365
|
-
}
|
|
620
|
+
[NipworkerRuntime wake];
|
|
366
621
|
}
|
|
367
622
|
|
|
368
623
|
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getStorageItem:(NSString *)key) {
|
package/dist/EngineManager.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngineManager.d.ts","sourceRoot":"","sources":["../src/EngineManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8B7D;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAA8B;
|
|
1
|
+
{"version":3,"file":"EngineManager.d.ts","sourceRoot":"","sources":["../src/EngineManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8B7D;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,UAAU,CAAK;gBAEX,OAAO,GAAE,kBAAuB;IAwK5C,OAAO,CAAC,uBAAuB;IA0C/B,SAAS,CAAC,QAAQ,IAAI,IAAI;IAI1B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,mBAAmB;IAwC3B,SAAS,CACR,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,EAAE,kBAAkB,GACzB,WAAW;IAgEd,OAAO,CACN,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,EACjB,aAAa,GAAE,MAAM,EAAO,EAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,GACzB,WAAW;IAyBd,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAuDvF,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI;IAgB/D,YAAY;IAQZ,OAAO,IAAI,IAAI;CAiBf"}
|