@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.
Files changed (180) hide show
  1. package/README.md +206 -73
  2. package/crates/native-ffi/README.md +14 -151
  3. package/crates/native-ffi/ios/README.md +4 -50
  4. package/crates/native-ffi/react-native/README.md +8 -7
  5. package/crates/native-ffi/react-native/android/build.gradle +1 -0
  6. package/crates/native-ffi/react-native/android/src/main/cpp/NipworkerByteRuntime.cpp +348 -0
  7. package/crates/native-ffi/react-native/android/src/main/java/com/candypoets/nipworker/reactnative/NipworkerHooks.kt +292 -0
  8. package/crates/native-ffi/react-native/android/src/main/java/com/candypoets/nipworker/reactnative/NipworkerReactNativeModule.kt +283 -89
  9. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/AddressPointer.java +75 -0
  10. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleBlock.java +102 -0
  11. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleBlockType.java +23 -0
  12. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleEntity.java +80 -0
  13. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleInline.java +85 -0
  14. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ArticleInlineType.java +24 -0
  15. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/BadgeAwardRecipient.java +61 -0
  16. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/BufferFull.java +52 -0
  17. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CacheInput.java +16 -0
  18. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CacheInputMessage.java +57 -0
  19. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CacheRequest.java +84 -0
  20. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CacheResponse.java +67 -0
  21. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CashuData.java +55 -0
  22. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ChatLimiterPipeConfig.java +74 -0
  23. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CodeData.java +61 -0
  24. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ConnectionStatus.java +68 -0
  25. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Contact.java +70 -0
  26. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ContentBlock.java +70 -0
  27. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ContentData.java +23 -0
  28. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Coordinate.java +75 -0
  29. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CountResponse.java +60 -0
  30. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/CounterPipeConfig.java +67 -0
  31. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/DLEQProof.java +69 -0
  32. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Emoji.java +62 -0
  33. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/EmojiData.java +68 -0
  34. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Eoce.java +55 -0
  35. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/EventPointer.java +74 -0
  36. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/GetPublicKey.java +43 -0
  37. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/HTLCWitness.java +64 -0
  38. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/HashtagData.java +55 -0
  39. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/HistoryTag.java +74 -0
  40. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ImageData.java +67 -0
  41. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ImetaTag.java +100 -0
  42. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind0Parsed.java +168 -0
  43. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind10002Parsed.java +59 -0
  44. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind10019Parsed.java +73 -0
  45. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1018Parsed.java +79 -0
  46. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1068Parsed.java +107 -0
  47. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1111Parsed.java +159 -0
  48. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1311Parsed.java +91 -0
  49. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind17375Parsed.java +74 -0
  50. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind17Parsed.java +81 -0
  51. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind1Parsed.java +109 -0
  52. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind20Parsed.java +107 -0
  53. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind22Parsed.java +111 -0
  54. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind30023Parsed.java +113 -0
  55. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind3Parsed.java +59 -0
  56. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind4Parsed.java +78 -0
  57. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind6Parsed.java +53 -0
  58. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind7374Parsed.java +66 -0
  59. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind7375Parsed.java +79 -0
  60. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind7376Parsed.java +100 -0
  61. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind7Parsed.java +81 -0
  62. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind8Parsed.java +78 -0
  63. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind9321Parsed.java +117 -0
  64. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Kind9735Parsed.java +119 -0
  65. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/KindFilterPipeConfig.java +60 -0
  66. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/LinkPreviewData.java +73 -0
  67. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ListParsed.java +123 -0
  68. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/LiveActivityRef.java +72 -0
  69. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/LiveChatParticipant.java +61 -0
  70. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/LiveChatThreadRef.java +61 -0
  71. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MainContent.java +20 -0
  72. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MainMessage.java +57 -0
  73. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MediaGroupData.java +58 -0
  74. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MediaItem.java +58 -0
  75. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Message.java +24 -0
  76. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MessageType.java +19 -0
  77. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MintInfo.java +65 -0
  78. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MintProofs.java +66 -0
  79. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/MuteFilterPipeConfig.java +84 -0
  80. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Nip07.java +43 -0
  81. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Nip46Bunker.java +61 -0
  82. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Nip46QR.java +61 -0
  83. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/NostrData.java +81 -0
  84. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/NostrEvent.java +95 -0
  85. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/NpubLimiterKey.java +15 -0
  86. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/NpubLimiterPipeConfig.java +64 -0
  87. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/P2PKWitness.java +57 -0
  88. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ParsePipeConfig.java +43 -0
  89. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ParsedData.java +39 -0
  90. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ParsedDataUnion.java +35 -0
  91. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ParsedEvent.java +108 -0
  92. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Pipe.java +57 -0
  93. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PipeConfig.java +23 -0
  94. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PipelineConfig.java +59 -0
  95. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PollOption.java +62 -0
  96. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PollType.java +15 -0
  97. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PreGenericParsed.java +213 -0
  98. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PreParticipant.java +73 -0
  99. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PreRefEvent.java +67 -0
  100. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/PrivateKey.java +55 -0
  101. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ProfilePointer.java +64 -0
  102. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Proof.java +90 -0
  103. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ProofVerificationPipeConfig.java +52 -0
  104. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Pubkey.java +55 -0
  105. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Publish.java +80 -0
  106. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Raw.java +55 -0
  107. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ReactionType.java +17 -0
  108. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/RelayInfo.java +63 -0
  109. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Request.java +134 -0
  110. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SaveToDbPipeConfig.java +43 -0
  111. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SerializeEventsPipeConfig.java +55 -0
  112. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SetSigner.java +57 -0
  113. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignEvent.java +54 -0
  114. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignedEvent.java +54 -0
  115. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignerOp.java +19 -0
  116. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignerRequest.java +80 -0
  117. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignerResponse.java +64 -0
  118. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SignerType.java +18 -0
  119. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/StringVec.java +57 -0
  120. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Subscribe.java +72 -0
  121. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SubscribeKind.java +19 -0
  122. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/SubscriptionConfig.java +95 -0
  123. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Tag.java +64 -0
  124. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Template.java +74 -0
  125. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Unsubscribe.java +55 -0
  126. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ValidProofs.java +59 -0
  127. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/VideoData.java +67 -0
  128. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/VideoVariant.java +102 -0
  129. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/Witness.java +17 -0
  130. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/WitnessString.java +54 -0
  131. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/WorkerMessage.java +74 -0
  132. package/crates/native-ffi/react-native/android/src/main/java/nostr/fb/ZapRequest.java +83 -0
  133. package/crates/native-ffi/react-native/ios/NipworkerReactNativeModule.h +18 -0
  134. package/crates/native-ffi/react-native/ios/NipworkerReactNativeModule.mm +263 -8
  135. package/dist/EngineManager.d.ts +1 -0
  136. package/dist/EngineManager.d.ts.map +1 -1
  137. package/dist/EngineManager.js +143 -137
  138. package/dist/NostrManager.d.ts +1 -0
  139. package/dist/NostrManager.d.ts.map +1 -1
  140. package/dist/NostrManager.js +49 -44
  141. package/dist/connections/index.js +87 -87
  142. package/dist/engine/index.js +119 -119
  143. package/dist/engine.d.ts.map +1 -1
  144. package/dist/hooks.d.ts +1 -1
  145. package/dist/hooks.d.ts.map +1 -1
  146. package/dist/hooks.js +27 -26
  147. package/dist/index.d.ts +1 -1
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/legacy.d.ts.map +1 -1
  150. package/dist/lib/ArrayBufferReader.d.ts +2 -1
  151. package/dist/lib/ArrayBufferReader.d.ts.map +1 -1
  152. package/dist/lib/BaseBackend.d.ts +5 -3
  153. package/dist/lib/BaseBackend.d.ts.map +1 -1
  154. package/dist/manager.d.ts +2 -6
  155. package/dist/manager.d.ts.map +1 -1
  156. package/dist/manager.js +10 -28
  157. package/dist/react-native.d.ts +33 -4
  158. package/dist/react-native.d.ts.map +1 -1
  159. package/dist/react-native.js +400 -122
  160. package/dist/scheduleMicrotask.js +58 -50
  161. package/package.json +13 -11
  162. package/swift/Package.swift +36 -0
  163. package/swift/README.md +438 -0
  164. package/swift/Sources/NipworkerSwift/ArrayBufferReader.swift +136 -0
  165. package/swift/Sources/NipworkerSwift/AuthSession.swift +24 -0
  166. package/swift/Sources/NipworkerSwift/FFI.swift +94 -0
  167. package/swift/Sources/NipworkerSwift/FlatBufferHelpers.swift +273 -0
  168. package/swift/Sources/NipworkerSwift/Generated/message_generated.swift +6530 -0
  169. package/swift/Sources/NipworkerSwift/Hooks.swift +300 -0
  170. package/swift/Sources/NipworkerSwift/Models.swift +156 -0
  171. package/swift/Sources/NipworkerSwift/NostrManager.swift +594 -0
  172. package/swift/Sources/NipworkerSwift/PublishTracker.swift +40 -0
  173. package/swift/Sources/NipworkerSwift/Subscription.swift +44 -0
  174. package/swift/Sources/NipworkerSwift/WorkerMessageView.swift +145 -0
  175. package/dist/NativeBackend.d.ts +0 -53
  176. package/dist/NativeBackend.d.ts.map +0 -1
  177. package/dist/NativeBackend.js +0 -464
  178. package/dist/native.d.ts +0 -29
  179. package/dist/native.d.ts.map +0 -1
  180. package/dist/native.js +0 -273
@@ -1,204 +1,482 @@
1
- import { TurboModuleRegistry as E, AppState as N, NativeEventEmitter as h, NativeModules as b } from "react-native";
2
- import { N as k } from "./NativeBackend.js";
3
- import { g as G, a as O, s as Q } from "./manager.js";
4
- const B = E.get("NipworkerReactNativeModule"), w = "NipworkerEvent", y = /* @__PURE__ */ new Map();
5
- let f;
6
- function S(e) {
7
- return e instanceof Uint8Array ? e.slice() : new Uint8Array(e).slice();
1
+ import { TurboModuleRegistry as F, AppState as _, NativeEventEmitter as A, NativeModules as V } from "react-native";
2
+ import * as p from "flatbuffers";
3
+ import { _ as j, w as C, t as w, u as S, i as G, r as Q, E as J, H as q, V as H, T as X, g, M as y, X as L, D as Y, J as x, Q as I, l as Z, n as ee, O as te, d as ne } from "./BaseBackend.js";
4
+ import { s as ie } from "./manager.js";
5
+ import { g as ke, a as Me } from "./manager.js";
6
+ import { aT as M, p as se, bm as re, bo as N } from "./message-type.js";
7
+ import { W as B, P as ae, R as oe } from "./worker-message.js";
8
+ const ue = F.get("NipworkerReactNativeModule"), R = "NipworkerEvent", E = /* @__PURE__ */ new Map();
9
+ let v;
10
+ function T(n) {
11
+ return n instanceof Uint8Array ? n.slice() : new Uint8Array(n).slice();
8
12
  }
9
- function A(e) {
10
- const t = new ArrayBuffer(e.byteLength);
11
- return new Uint8Array(t).set(e), t;
13
+ function P(n) {
14
+ const e = new ArrayBuffer(n.byteLength);
15
+ return new Uint8Array(e).set(n), e;
12
16
  }
13
- function c() {
17
+ function l() {
14
18
  return globalThis.__nipworkerReactNativeByteRuntime;
15
19
  }
16
- function m() {
17
- return B;
20
+ function k() {
21
+ return ue;
18
22
  }
19
- function l() {
20
- return m() ?? b.NipworkerReactNativeModule;
23
+ function m() {
24
+ return k() ?? V.NipworkerReactNativeModule;
21
25
  }
22
- const I = {
23
- getItem(e) {
24
- const t = l();
25
- if (typeof (t == null ? void 0 : t.getStorageItem) == "function") {
26
- const n = t.getStorageItem(e);
27
- return typeof n == "string" ? n : null;
26
+ const K = {
27
+ getItem(n) {
28
+ const e = m();
29
+ if (typeof (e == null ? void 0 : e.getStorageItem) == "function") {
30
+ const t = e.getStorageItem(n);
31
+ return typeof t == "string" ? t : null;
28
32
  }
29
- return y.get(e) ?? null;
33
+ return E.get(n) ?? null;
30
34
  },
31
- setItem(e, t) {
32
- const n = l();
33
- if (typeof (n == null ? void 0 : n.setStorageItem) == "function") {
34
- n.setStorageItem(e, t);
35
+ setItem(n, e) {
36
+ const t = m();
37
+ if (typeof (t == null ? void 0 : t.setStorageItem) == "function") {
38
+ t.setStorageItem(n, e);
35
39
  return;
36
40
  }
37
- y.set(e, t);
41
+ E.set(n, e);
38
42
  },
39
- removeItem(e) {
40
- const t = l();
41
- if (typeof (t == null ? void 0 : t.removeStorageItem) == "function") {
42
- t.removeStorageItem(e);
43
+ removeItem(n) {
44
+ const e = m();
45
+ if (typeof (e == null ? void 0 : e.removeStorageItem) == "function") {
46
+ e.removeStorageItem(n);
43
47
  return;
44
48
  }
45
- y.delete(e);
49
+ E.delete(n);
46
50
  }
47
51
  };
48
- function M() {
49
- const e = l();
50
- if (!e)
52
+ function U() {
53
+ const n = m();
54
+ if (!n)
51
55
  throw new Error(
52
56
  "[ReactNativeBackend] NipworkerReactNative native module not found. Ensure the native module is linked."
53
57
  );
54
- return e;
58
+ return n;
55
59
  }
56
- const L = {
60
+ const D = {
57
61
  name: "react-native",
58
- eventName: w,
59
- storage: I,
62
+ eventName: R,
63
+ storage: K,
60
64
  getModule() {
61
- const e = M();
65
+ const n = U();
62
66
  return {
63
- init(t) {
64
- const n = {
65
- defaultRelays: (t == null ? void 0 : t.defaultRelays) ?? [],
66
- indexerRelays: (t == null ? void 0 : t.indexerRelays) ?? []
67
+ init(e) {
68
+ const t = {
69
+ defaultRelays: (e == null ? void 0 : e.defaultRelays) ?? [],
70
+ indexerRelays: (e == null ? void 0 : e.indexerRelays) ?? []
67
71
  };
68
- (n.defaultRelays.length > 0 || n.indexerRelays.length > 0) && typeof e.initEngine == "function" && e.initEngine(n.defaultRelays, n.indexerRelays), typeof e.installByteRuntime == "function" && e.installByteRuntime();
69
- const s = c();
72
+ (t.defaultRelays.length > 0 || t.indexerRelays.length > 0) && typeof n.initEngine == "function" && n.initEngine(t.defaultRelays, t.indexerRelays), typeof n.installByteRuntime == "function" && n.installByteRuntime();
73
+ const s = l();
70
74
  if (s) {
71
- s.init(n);
75
+ s.init(t);
72
76
  return;
73
77
  }
74
- typeof e.initEngine == "function" ? e.initEngine(n.defaultRelays, n.indexerRelays) : e.init();
78
+ typeof n.initEngine == "function" ? n.initEngine(t.defaultRelays, t.indexerRelays) : n.init();
75
79
  },
76
- handleMessage(t) {
77
- const n = S(t), u = c();
78
- if (u) {
79
- u.handleMessage(A(n));
80
+ handleMessage(e) {
81
+ const t = T(e), i = l();
82
+ if (i) {
83
+ i.handleMessage(P(t));
80
84
  return;
81
85
  }
82
- e.handleMessage(Array.from(n));
86
+ n.handleMessage(Array.from(t));
87
+ },
88
+ subscribe(e, t) {
89
+ var _a, _b;
90
+ const i = T(e);
91
+ return (_b = (_a = l()) == null ? void 0 : _a.subscribe) == null ? void 0 : _b.call(_a, P(i), t);
92
+ },
93
+ publish(e, t) {
94
+ var _a, _b;
95
+ const i = T(e);
96
+ return (_b = (_a = l()) == null ? void 0 : _a.publish) == null ? void 0 : _b.call(_a, P(i), t);
83
97
  },
84
98
  wake() {
85
- const t = c();
86
- if (t && typeof t.wake == "function") {
87
- t.wake();
99
+ const e = l();
100
+ if (e && typeof e.wake == "function") {
101
+ e.wake();
88
102
  return;
89
103
  }
90
- typeof e.wake == "function" && e.wake();
104
+ typeof n.wake == "function" && n.wake();
91
105
  },
92
- setPrivateKey(t) {
93
- const n = c();
94
- if (n) {
95
- n.setPrivateKey(t);
106
+ setPrivateKey(e) {
107
+ const t = l();
108
+ if (t) {
109
+ t.setPrivateKey(e);
96
110
  return;
97
111
  }
98
- e.setPrivateKey(t);
112
+ n.setPrivateKey(e);
99
113
  },
100
114
  deinit() {
101
- const t = c();
102
- if (t) {
103
- t.deinit();
115
+ const e = l();
116
+ if (e) {
117
+ e.deinit();
104
118
  return;
105
119
  }
106
- typeof e.deinitEngine == "function" ? e.deinitEngine() : e.deinit();
120
+ typeof n.deinitEngine == "function" ? n.deinitEngine() : n.deinit();
121
+ },
122
+ registerSubscription(e, t) {
123
+ var _a, _b;
124
+ return ((_b = (_a = l()) == null ? void 0 : _a.registerSubscription) == null ? void 0 : _b.call(_a, e, t)) === true;
125
+ },
126
+ registerPublishBuffer(e, t) {
127
+ var _a, _b;
128
+ return ((_b = (_a = l()) == null ? void 0 : _a.registerPublishBuffer) == null ? void 0 : _b.call(_a, e, t)) === true;
129
+ },
130
+ retainSubscriptionBuffer(e) {
131
+ var _a, _b;
132
+ return (_b = (_a = l()) == null ? void 0 : _a.retainSubscriptionBuffer) == null ? void 0 : _b.call(_a, e);
133
+ },
134
+ retainSubscription(e) {
135
+ var _a, _b;
136
+ return ((_b = (_a = l()) == null ? void 0 : _a.retainSubscription) == null ? void 0 : _b.call(_a, e)) === true;
137
+ },
138
+ releaseSubscription(e) {
139
+ var _a, _b;
140
+ (_b = (_a = l()) == null ? void 0 : _a.releaseSubscription) == null ? void 0 : _b.call(_a, e);
141
+ },
142
+ getSubscriptionBuffer(e) {
143
+ var _a, _b;
144
+ return (_b = (_a = l()) == null ? void 0 : _a.getSubscriptionBuffer) == null ? void 0 : _b.call(_a, e);
145
+ },
146
+ cleanupSubscriptions() {
147
+ var _a, _b;
148
+ (_b = (_a = l()) == null ? void 0 : _a.cleanupSubscriptions) == null ? void 0 : _b.call(_a);
107
149
  }
108
150
  };
109
151
  },
110
152
  getEventEmitter() {
111
- const e = M();
112
- typeof e.installByteRuntime == "function" && e.installByteRuntime();
113
- const t = c();
114
- if (t) {
115
- const i = m(), r = (i == null ? void 0 : i.onData) ? void 0 : new h(e), o = /* @__PURE__ */ new Map(), v = (d, a) => {
116
- for (const p of a)
117
- d(p);
118
- }, R = (d, a) => {
119
- (a == null ? void 0 : a.v) !== 1 || (a == null ? void 0 : a.encoding) !== "queued" || v(d, t.drain());
153
+ const n = U();
154
+ typeof n.installByteRuntime == "function" && n.installByteRuntime();
155
+ const e = l();
156
+ if (e) {
157
+ const a = k(), r = (a == null ? void 0 : a.onData) ? void 0 : new A(n), o = /* @__PURE__ */ new Map(), u = (h, f) => {
158
+ for (const c of f)
159
+ h(c);
160
+ }, d = (h, f) => {
161
+ (f == null ? void 0 : f.v) !== 1 || (f == null ? void 0 : f.encoding) !== "queued" || u(h, e.drain());
120
162
  };
121
163
  return {
122
- addListener(d, a) {
123
- const p = (i == null ? void 0 : i.onData) ? i.onData((g) => R(a, g)) : r.addListener(
124
- w,
125
- (g) => R(a, g)
164
+ addListener(h, f) {
165
+ const c = (a == null ? void 0 : a.onData) ? a.onData((b) => d(f, b)) : r.addListener(
166
+ R,
167
+ (b) => d(f, b)
126
168
  );
127
- o.set(a, p);
169
+ o.set(f, c);
128
170
  },
129
- removeListener(d, a) {
171
+ removeListener(h, f) {
130
172
  var _a;
131
- (_a = o.get(a)) == null ? void 0 : _a.remove(), o.delete(a);
173
+ (_a = o.get(f)) == null ? void 0 : _a.remove(), o.delete(f);
132
174
  }
133
175
  };
134
176
  }
135
- const n = m();
136
- if (n == null ? void 0 : n.onData) {
137
- const i = /* @__PURE__ */ new Map();
177
+ const t = k();
178
+ if (t == null ? void 0 : t.onData) {
179
+ const a = /* @__PURE__ */ new Map();
138
180
  return {
139
181
  addListener(r, o) {
140
- i.set(
182
+ a.set(
141
183
  o,
142
- n.onData((v) => o(v.data))
184
+ t.onData((u) => o(u.data))
143
185
  );
144
186
  },
145
187
  removeListener(r, o) {
146
188
  var _a;
147
- (_a = i.get(o)) == null ? void 0 : _a.remove(), i.delete(o);
189
+ (_a = a.get(o)) == null ? void 0 : _a.remove(), a.delete(o);
148
190
  }
149
191
  };
150
192
  }
151
- const u = new h(e), s = /* @__PURE__ */ new Map();
193
+ const i = new A(n), s = /* @__PURE__ */ new Map();
152
194
  return {
153
- addListener(i, r) {
154
- s.set(r, u.addListener(i, r));
195
+ addListener(a, r) {
196
+ s.set(r, i.addListener(a, r));
155
197
  },
156
- removeListener(i, r) {
198
+ removeListener(a, r) {
157
199
  var _a;
158
200
  (_a = s.get(r)) == null ? void 0 : _a.remove(), s.delete(r);
159
201
  }
160
202
  };
161
203
  }
162
204
  };
163
- class _ extends k {
164
- constructor(t = {}) {
165
- super(t, L), this.appState = N.currentState, this.appStateSubscription = N.addEventListener("change", (n) => {
166
- const u = this.appState === "active", s = this.appState === "background" || this.appState === "inactive", i = n === "background" || n === "inactive";
167
- this.appState = n, u && i && this.cleanup(), s && n === "active" && this.wakeNative();
168
- });
205
+ function z(n) {
206
+ return n instanceof Uint8Array ? n : n instanceof ArrayBuffer ? new Uint8Array(n) : ArrayBuffer.isView(n) ? new Uint8Array(n.buffer, n.byteOffset, n.byteLength) : Array.isArray(n) ? new Uint8Array(n) : !n || typeof n != "object" ? null : n.v === 1 && n.encoding === "bytes" ? z(n.data) : null;
207
+ }
208
+ const O = [78, 87, 82, 49];
209
+ function W(n) {
210
+ if (n.byteLength < 8) return null;
211
+ for (let i = 0; i < O.length; i++)
212
+ if (n[i] !== O[i]) return null;
213
+ const t = new DataView(n.buffer, n.byteOffset, n.byteLength).getUint32(4, true);
214
+ if (t === 0 || t !== n.byteLength - 8) return null;
215
+ try {
216
+ return new TextDecoder().decode(n.subarray(8));
217
+ } catch {
218
+ return null;
169
219
  }
170
- deinit() {
220
+ }
221
+ class ce extends j {
222
+ constructor(e = {}) {
223
+ super(K), this.appState = _.currentState, this.deinitialized = false, this._signCB = (t) => {
224
+ }, this.nativeModule = D.getModule(), this.nativeModule.init(e), this.useByteRuntime = !!l(), this.eventEmitter = D.getEventEmitter(), this.eventListener = (t) => {
225
+ if (this.deinitialized) return;
226
+ const i = Array.isArray(t) ? t[0] : t, s = z(i);
227
+ if (s) {
228
+ if (this.useByteRuntime) {
229
+ this.handleNativeWake(s);
230
+ return;
231
+ }
232
+ this.handleNativeMessage(s);
233
+ }
234
+ }, this.eventEmitter.addListener(R, this.eventListener), this.appStateSubscription = _.addEventListener("change", (t) => {
235
+ const i = this.appState === "active", s = this.appState === "background" || this.appState === "inactive", a = t === "background" || t === "inactive";
236
+ this.appState = t, i && a && this.cleanup(), s && t === "active" && this.nativeModule.wake();
237
+ }), ie(this), Promise.resolve().then(() => this.restoreSession());
238
+ }
239
+ isDeinitialized() {
240
+ return this.deinitialized;
241
+ }
242
+ postMessage(e) {
243
+ this.nativeModule.handleMessage(e.slice().buffer);
244
+ }
245
+ handleNativeWake(e) {
246
+ const t = W(e);
247
+ if (t) {
248
+ this.dispatch(`subscription:${t}`, t), this.dispatch(`publish:${t}`, t);
249
+ return;
250
+ }
251
+ this.handleNativePayload(e);
252
+ }
253
+ handleNativeMessage(e) {
254
+ const t = W(e);
255
+ if (t) {
256
+ this.dispatch(`subscription:${t}`, t), this.dispatch(`publish:${t}`, t);
257
+ return;
258
+ }
259
+ this.handleNativePayload(e);
260
+ }
261
+ handleNativePayload(e) {
262
+ let t = "", i;
263
+ try {
264
+ const s = new p.ByteBuffer(e);
265
+ i = B.getRootAsWorkerMessage(s), t = i.subId() ?? "";
266
+ } catch {
267
+ return;
268
+ }
269
+ if (!this.handleRelayStatus(i, t)) {
270
+ if (t === "crypto") {
271
+ this.handleCryptoMessage(e);
272
+ return;
273
+ }
274
+ if (t === "") {
275
+ this.handleDirectResponse(e);
276
+ return;
277
+ }
278
+ this.dispatch(`subscription:${t}`, t), this.dispatch(`publish:${t}`, t);
279
+ }
280
+ }
281
+ handleRelayStatus(e, t) {
282
+ if (e.type() !== M.ConnectionStatus)
283
+ return false;
284
+ const i = e.content(new se()), s = (i == null ? void 0 : i.relayUrl()) ?? "", a = (i == null ? void 0 : i.status()) ?? "";
285
+ return s && a && (this.relayStatuses.set(s, {
286
+ status: a,
287
+ timestamp: Date.now()
288
+ }), this.dispatch("relay:status", { status: a, url: s })), !t;
289
+ }
290
+ handleDirectResponse(e) {
171
291
  var _a;
172
- (_a = this.appStateSubscription) == null ? void 0 : _a.remove(), this.appStateSubscription = void 0, super.deinit();
292
+ if (e.length < 4) return;
293
+ const i = new DataView(e.buffer, e.byteOffset, e.byteLength).getUint32(0, true), s = e.length >= 4 + i && i > 0, a = new p.ByteBuffer(
294
+ s ? e.subarray(4, 4 + i) : e
295
+ ), r = B.getRootAsWorkerMessage(a);
296
+ if (r.type() !== M.Pubkey) return;
297
+ const o = r.content(new ae()), u = o ? o.pubkey() : null;
298
+ if (u) {
299
+ this.activePubkey = u;
300
+ const d = ((_a = this._pendingSession) == null ? void 0 : _a.type) === "privkey" ? this._pendingSession.payload : void 0;
301
+ this._pendingSession && (this.saveSession(u, this._pendingSession.type, this._pendingSession.payload), this._pendingSession = null), this.dispatch("auth", { pubkey: this.activePubkey, hasSigner: true, secretKey: d });
302
+ } else
303
+ this.dispatch("auth", { pubkey: null, hasSigner: false });
304
+ }
305
+ handleCryptoMessage(e) {
306
+ var _a;
307
+ const t = new p.ByteBuffer(e), i = B.getRootAsWorkerMessage(t);
308
+ if (i.type() !== M.Raw) return;
309
+ const s = i.content(new oe()), a = s ? s.raw() : null;
310
+ if (a)
311
+ try {
312
+ const r = JSON.parse(a);
313
+ if (r.op === "get_public_key" || r.op === "set_signer") {
314
+ const o = ((_a = this._pendingSession) == null ? void 0 : _a.type) === "privkey" ? this._pendingSession.payload : void 0;
315
+ if (r.result && (this.activePubkey = r.result, this._pendingSession)) {
316
+ const u = this._pendingSession.type === "nip46" && typeof r.bunker_url == "string" && r.bunker_url.startsWith("bunker://") && this._pendingSession.payload && typeof this._pendingSession.payload == "object" ? { ...this._pendingSession.payload, url: r.bunker_url } : this._pendingSession.payload;
317
+ this.saveSession(this.activePubkey, this._pendingSession.type, u), this._pendingSession = null;
318
+ }
319
+ this.dispatch("auth", { pubkey: this.activePubkey, hasSigner: !!r.result, secretKey: o });
320
+ } else r.op === "sign_event" && r.result ? this._signCB(JSON.parse(r.result)) : r.error && console.warn("[ReactNativeManager] Crypto error:", r.error);
321
+ } catch (r) {
322
+ console.warn("[ReactNativeManager] Failed to parse crypto raw message:", r);
323
+ }
324
+ }
325
+ subscribe(e, t, i) {
326
+ const s = e, a = this.nativeModule.retainSubscriptionBuffer(s);
327
+ if (a instanceof ArrayBuffer)
328
+ return a;
329
+ const r = i.pipeline !== void 0 ? new C(i.pipeline) : new C([
330
+ new w(S.MuteFilterPipeConfig, new G()),
331
+ new w(S.ParsePipeConfig, new Q()),
332
+ new w(S.SaveToDbPipeConfig, new J()),
333
+ new w(S.SerializeEventsPipeConfig, new q(s))
334
+ ]), o = new H(
335
+ r,
336
+ i.closeOnEose,
337
+ i.cacheFirst,
338
+ i.timeoutMs ? BigInt(i.timeoutMs) : void 0,
339
+ i.maxEvents,
340
+ i.skipCache,
341
+ i.force,
342
+ i.bytesPerEvent,
343
+ i.isSlow,
344
+ i.pagination ? this.textEncoder.encode(i.pagination) : null,
345
+ i.cacheOnly
346
+ ), u = new X(
347
+ this.textEncoder.encode(s),
348
+ t.map(
349
+ (c) => new re(
350
+ c.ids,
351
+ c.authors,
352
+ c.kinds,
353
+ Object.entries(c.tags || {}).flatMap(
354
+ ([b, $]) => new N([b, ...$])
355
+ ),
356
+ c.limit,
357
+ c.since,
358
+ c.until,
359
+ c.search ? this.textEncoder.encode(c.search) : null,
360
+ c.relays,
361
+ c.closeOnEOSE,
362
+ c.cacheFirst,
363
+ c.noCache,
364
+ void 0,
365
+ i.cacheOnly
366
+ )
367
+ ),
368
+ o
369
+ ), d = new g(y.Subscribe, u), h = new p.Builder(2048);
370
+ h.finish(d.pack(h));
371
+ const f = this.nativeModule.subscribe(h.asUint8Array(), s);
372
+ if (!(f instanceof ArrayBuffer))
373
+ throw new Error("[ReactNativeManager] native subscription buffer unavailable");
374
+ return f;
375
+ }
376
+ getBuffer(e) {
377
+ console.warn(
378
+ `[ReactNativeManager] getBuffer(${e}) is deprecated. Use subscribe() through useSubscription so Rust can own subscription lifetime.`
379
+ );
380
+ }
381
+ unsubscribe(e) {
382
+ this.nativeModule.releaseSubscription(e);
383
+ }
384
+ publish(e, t, i = [], s) {
385
+ const a = new L(
386
+ t.kind,
387
+ t.created_at,
388
+ this.textEncoder.encode(t.content),
389
+ t.tags.map((h) => new N(h)) || []
390
+ ), r = new Y(
391
+ this.textEncoder.encode(e),
392
+ a,
393
+ i,
394
+ s || []
395
+ ), o = new g(y.Publish, r), u = new p.Builder(2048);
396
+ u.finish(o.pack(u));
397
+ const d = this.nativeModule.publish(u.asUint8Array(), e);
398
+ if (!(d instanceof ArrayBuffer))
399
+ throw new Error(`[ReactNativeManager] Failed to get native publish buffer '${e}'`);
400
+ return d;
401
+ }
402
+ releasePublish(e) {
403
+ this.nativeModule.releaseSubscription(e);
404
+ }
405
+ setSigner(e, t) {
406
+ switch (this._pendingSession = { type: e, payload: t }, e) {
407
+ case "pubkey":
408
+ this.activePubkey = t, this.saveSession(this.activePubkey, "pubkey", t), this._pendingSession = null, this.dispatch("auth", { pubkey: this.activePubkey, hasSigner: false });
409
+ break;
410
+ case "privkey":
411
+ this.nativeModule.setPrivateKey(t), this.getPublicKey();
412
+ break;
413
+ case "nip07":
414
+ console.warn("[ReactNativeManager] NIP-07 is not supported in React Native"), this.dispatch("auth", { pubkey: null, hasSigner: false });
415
+ break;
416
+ case "nip46": {
417
+ const i = t, s = (i == null ? void 0 : i.url) || "", a = i == null ? void 0 : i.clientSecret, r = s.startsWith("bunker://") ? new x(I.Nip46Bunker, new Z(s, a)) : s.startsWith("nostrconnect://") ? new x(I.Nip46QR, new ee(s, a)) : null;
418
+ if (!r) {
419
+ this._pendingSession = null, this.dispatch("auth", { pubkey: null, hasSigner: false });
420
+ return;
421
+ }
422
+ const o = new g(y.SetSigner, r), u = new p.Builder(2048);
423
+ u.finish(o.pack(u)), this.postMessage(u.asUint8Array());
424
+ break;
425
+ }
426
+ }
427
+ }
428
+ signEvent(e, t) {
429
+ this._signCB = t;
430
+ const i = new L(
431
+ e.kind,
432
+ e.created_at,
433
+ this.textEncoder.encode(e.content),
434
+ e.tags.map((o) => new N(o)) || []
435
+ ), s = new te(i), a = new g(y.SignEvent, s), r = new p.Builder(2048);
436
+ r.finish(a.pack(r)), this.postMessage(r.asUint8Array());
437
+ }
438
+ getPublicKey() {
439
+ const e = new g(y.GetPublicKey, new ne()), t = new p.Builder(2048);
440
+ t.finish(e.pack(t)), this.postMessage(t.asUint8Array());
441
+ }
442
+ onLogout() {
443
+ }
444
+ cleanup() {
445
+ this.nativeModule.cleanupSubscriptions();
446
+ }
447
+ deinit() {
448
+ var _a, _b;
449
+ this.deinitialized = true, (_a = this.appStateSubscription) == null ? void 0 : _a.remove(), this.appStateSubscription = void 0, this.eventListener && ((_b = this.eventEmitter) == null ? void 0 : _b.removeListener(R, this.eventListener), this.eventListener = void 0), this.nativeModule.deinit();
173
450
  }
174
451
  }
175
- function x(e = {}) {
176
- return f && !f.isDeinitialized() || (f = new _(e)), f;
177
- }
178
- function U(e) {
179
- return x(e);
452
+ function le(n = {}) {
453
+ return v && !v.isDeinitialized() || (v = new ce(n)), v;
180
454
  }
181
- function T() {
182
- return !!l();
455
+ function ye(n) {
456
+ return le(n);
183
457
  }
184
- function K() {
458
+ function fe() {
185
459
  return !!m();
186
460
  }
187
- function P() {
188
- return !!c();
461
+ function ve() {
462
+ return !!k();
463
+ }
464
+ function me() {
465
+ return !!l();
189
466
  }
190
- function V() {
191
- return T();
467
+ function we() {
468
+ return fe();
192
469
  }
193
470
  export {
194
- _ as ReactNativeBackend,
195
- U as createNostrManager,
196
- G as getManager,
197
- x as getOrCreateReactNativeBackend,
198
- V as hasNativeModule,
199
- P as hasReactNativeByteRuntime,
200
- T as hasReactNativeModule,
201
- K as hasReactNativeTurboModule,
202
- O as setGlobalManager,
203
- Q as setManager
471
+ ce as ReactNativeBackend,
472
+ ce as ReactNativeManager,
473
+ ye as createNostrManager,
474
+ ke as getManager,
475
+ le as getOrCreateReactNativeBackend,
476
+ we as hasNativeModule,
477
+ me as hasReactNativeByteRuntime,
478
+ fe as hasReactNativeModule,
479
+ ve as hasReactNativeTurboModule,
480
+ Me as setGlobalManager,
481
+ ie as setManager
204
482
  };