@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,15 +1,15 @@
1
- import * as b from "flatbuffers";
1
+ import * as f from "flatbuffers";
2
2
  import { A as m, s as I } from "./scheduleMicrotask.js";
3
- import { _ as K, $ as z, Z as D, g as P, M as u, V, w as F, T as $, X as N, D as J, J as _, Q as v, l as Q, n as q, j as G, y as H, O as X, d as Z } from "./BaseBackend.js";
4
- import { aT as O, p as Y, bm as ee, bo as E } from "./message-type.js";
3
+ import { _ as K, $ as z, Z as D, g as P, M as u, V, w as $, T as F, X as N, D as J, J as _, Q as v, l as Q, n as q, j as G, y as H, O as X, d as Z } from "./BaseBackend.js";
4
+ import { aT as O, p as Y, bm as ee, bo as A } from "./message-type.js";
5
5
  import { W as j, R as te } from "./worker-message.js";
6
6
  import { s as se } from "./manager.js";
7
7
  class pe extends K {
8
8
  constructor(e = {}) {
9
- super(z), this.signCB = (y) => {
10
- };
11
- const t = new MessageChannel(), s = new MessageChannel(), i = new MessageChannel(), n = new MessageChannel(), r = new MessageChannel(), a = new MessageChannel(), l = new MessageChannel(), h = new MessageChannel(), f = !!e.proxy, w = f ? new URL("./connections/proxy.js", import.meta.url) : new URL("./connections/index.js", import.meta.url), k = new URL("./cache/index.js", import.meta.url), x = new URL("./parser/index.js", import.meta.url), o = new URL("./crypto/index.js", import.meta.url);
12
- console.log("constructing crates"), this.connections = new Worker(w, { type: "module" }), this.cache = new Worker(k, { type: "module" }), this.parser = new Worker(x, { type: "module" }), this.crypto = new Worker(o, { type: "module" }), console.log("connectionMode", f ? "proxy" : "rust"), console.log(this.connections, this.cache, this.parser, this.crypto), this.connections.postMessage(
9
+ super(z), this.signCB = (d) => {
10
+ }, this.lastWakeAt = 0;
11
+ const t = new MessageChannel(), s = new MessageChannel(), i = new MessageChannel(), n = new MessageChannel(), r = new MessageChannel(), a = new MessageChannel(), l = new MessageChannel(), h = new MessageChannel(), w = !!e.proxy, b = w ? new URL("./connections/proxy.js", import.meta.url) : new URL("./connections/index.js", import.meta.url), k = new URL("./cache/index.js", import.meta.url), x = new URL("./parser/index.js", import.meta.url), o = new URL("./crypto/index.js", import.meta.url);
12
+ console.log("constructing crates"), this.connections = new Worker(b, { type: "module" }), this.cache = new Worker(k, { type: "module" }), this.parser = new Worker(x, { type: "module" }), this.crypto = new Worker(o, { type: "module" }), console.log("connectionMode", w ? "proxy" : "rust"), console.log(this.connections, this.cache, this.parser, this.crypto), this.connections.postMessage(
13
13
  {
14
14
  type: "init",
15
15
  payload: {
@@ -39,8 +39,8 @@ class pe extends K {
39
39
  }
40
40
  },
41
41
  [t.port1, n.port2]
42
- ), this.parserMainPort = l.port1, this.parserMainPort.onmessage = (y) => {
43
- const p = y.data;
42
+ ), this.parserMainPort = l.port1, this.parserMainPort.onmessage = (d) => {
43
+ const p = d.data;
44
44
  if (!p || !(p instanceof ArrayBuffer)) {
45
45
  console.log("[main] ignoring message - not ArrayBuffer");
46
46
  return;
@@ -49,27 +49,27 @@ class pe extends K {
49
49
  if (p.byteLength < 4) return;
50
50
  const S = C.getUint32(0, true);
51
51
  if (p.byteLength < 4 + S) return;
52
- const c = new TextDecoder().decode(new Uint8Array(p, 4, S)), d = new Uint8Array(p, 4 + S);
53
- if (d.length === 0) return;
52
+ const c = new TextDecoder().decode(new Uint8Array(p, 4, S)), y = new Uint8Array(p, 4 + S);
53
+ if (y.length === 0) return;
54
54
  try {
55
- const T = new b.ByteBuffer(d), W = j.getRootAsWorkerMessage(T);
55
+ const T = new f.ByteBuffer(y), W = j.getRootAsWorkerMessage(T);
56
56
  if (W.type() === O.ConnectionStatus) {
57
- const R = W.content(new Y());
58
- if (R) {
59
- const L = R.relayUrl() || "", B = R.status() || "";
60
- L && B && (this.relayStatuses.set(L, { status: B, timestamp: Date.now() }), this.dispatch("relay:status", { status: B, url: L }));
57
+ const L = W.content(new Y());
58
+ if (L) {
59
+ const E = L.relayUrl() || "", R = L.status() || "";
60
+ E && R && (this.relayStatuses.set(E, { status: R, timestamp: Date.now() }), this.dispatch("relay:status", { status: R, url: E }));
61
61
  }
62
62
  if (!c)
63
63
  return;
64
64
  }
65
65
  } catch {
66
66
  }
67
- const g = new Uint8Array(4 + d.length);
68
- new DataView(g.buffer).setUint32(0, d.length, true), g.set(d, 4);
69
- const A = this.subscriptions.get(c);
70
- if (A) {
67
+ const g = new Uint8Array(4 + y.length);
68
+ new DataView(g.buffer).setUint32(0, y.length, true), g.set(y, 4);
69
+ const B = this.subscriptions.get(c);
70
+ if (B) {
71
71
  m.writeBatchedData(
72
- A.buffer,
72
+ B.buffer,
73
73
  g,
74
74
  c
75
75
  ) ? this.dispatch(`subscription:${c}`, c) : this.closeSubscription(c);
@@ -104,14 +104,14 @@ class pe extends K {
104
104
  }
105
105
  },
106
106
  [i.port2, r.port2, a.port1]
107
- ), this.cryptoMainPort = a.port2, a.port2.onmessage = (y) => {
108
- const p = y.data;
107
+ ), this.cryptoMainPort = a.port2, a.port2.onmessage = (d) => {
108
+ const p = d.data;
109
109
  if (!(p instanceof ArrayBuffer)) return;
110
- const C = new Uint8Array(p), S = new b.ByteBuffer(C), c = j.getRootAsWorkerMessage(S);
110
+ const C = new Uint8Array(p), S = new f.ByteBuffer(C), c = j.getRootAsWorkerMessage(S);
111
111
  if (c.type() !== O.Raw) return;
112
- const d = c.content(new te());
113
- if (!d) return;
114
- const g = d.raw();
112
+ const y = c.content(new te());
113
+ if (!y) return;
114
+ const g = y.raw();
115
115
  if (g)
116
116
  try {
117
117
  const M = JSON.parse(g);
@@ -126,7 +126,7 @@ class pe extends K {
126
126
  * Cleanup stale subscriptions when hidden, and wake workers when the page becomes active again.
127
127
  */
128
128
  setupVisibilityTracking() {
129
- if (typeof document > "u") return;
129
+ if (typeof document > "u" || typeof window > "u") return;
130
130
  let e = false, t = 0;
131
131
  const s = (i) => {
132
132
  const n = t > 0 ? Date.now() - t : 0;
@@ -137,7 +137,11 @@ class pe extends K {
137
137
  }), window.addEventListener("pagehide", () => {
138
138
  e = true, t = t || Date.now(), this.cleanup();
139
139
  }), window.addEventListener("pageshow", () => {
140
- (e || document.visibilityState === "visible") && s("pageshow");
140
+ document.hidden || s("pageshow");
141
+ }), window.addEventListener("focus", () => {
142
+ document.hidden || s("focus");
143
+ }), window.addEventListener("online", () => {
144
+ document.hidden || s("online");
141
145
  });
142
146
  }
143
147
  /**
@@ -145,20 +149,21 @@ class pe extends K {
145
149
  * Called when returning from background to foreground.
146
150
  */
147
151
  wakeWorkers(e = "visibility") {
148
- console.log("[main] Waking connections worker for foreground reconnection"), this.connections.postMessage({ type: "wake", source: e });
152
+ const t = Date.now();
153
+ t - this.lastWakeAt < 250 || (this.lastWakeAt = t, console.log(`[main] Waking connections worker for foreground reconnection (${e})`), this.connections.postMessage({ type: "wake", source: e }));
149
154
  }
150
155
  postToWorker(e) {
151
156
  const t = e == null ? void 0 : e.serializedMessage;
152
157
  t && this.parserMainPort.postMessage(t, [t.buffer]);
153
158
  }
154
159
  closeSubscription(e) {
155
- const t = new D(this.textEncoder.encode(e)), s = new P(u.Unsubscribe, t), i = new b.Builder(256);
160
+ const t = new D(this.textEncoder.encode(e)), s = new P(u.Unsubscribe, t), i = new f.Builder(256);
156
161
  i.finish(s.pack(i));
157
162
  const n = i.asUint8Array();
158
163
  this.parserMainPort.postMessage(n, [n.buffer]), this.subscriptions.delete(e);
159
164
  }
160
165
  sendCryptoMessage(e, t) {
161
- const s = new P(e, t), i = new b.Builder(2048);
166
+ const s = new P(e, t), i = new f.Builder(2048);
162
167
  i.finish(s.pack(i));
163
168
  const n = i.asUint8Array();
164
169
  this.cryptoMainPort.postMessage(n, [n.buffer]);
@@ -248,10 +253,10 @@ class pe extends K {
248
253
  const i = e, n = this.subscriptions.get(i);
249
254
  if (n)
250
255
  return n.refCount++, n.buffer;
251
- const r = t.reduce((o, y) => o + (y.limit || 100), 0), a = m.calculateBufferSize(r, s.bytesPerEvent), l = new ArrayBuffer(a);
256
+ const r = t.reduce((o, d) => o + (d.limit || 100), 0), a = m.calculateBufferSize(r, s.bytesPerEvent), l = new ArrayBuffer(a);
252
257
  m.initializeBuffer(l), this.subscriptions.set(i, { buffer: l, options: s, refCount: 1 });
253
258
  const h = new V(
254
- new F(s.pipeline || []),
259
+ new $(s.pipeline || []),
255
260
  s.closeOnEose,
256
261
  s.cacheFirst,
257
262
  s.timeoutMs ? BigInt(s.timeoutMs) : void 0,
@@ -262,7 +267,7 @@ class pe extends K {
262
267
  s.isSlow,
263
268
  s.pagination ? this.textEncoder.encode(s.pagination) : null,
264
269
  s.cacheOnly
265
- ), f = new $(
270
+ ), w = new F(
266
271
  this.textEncoder.encode(i),
267
272
  t.map(
268
273
  (o) => new ee(
@@ -270,7 +275,7 @@ class pe extends K {
270
275
  o.authors,
271
276
  o.kinds,
272
277
  Object.entries(o.tags || {}).flatMap(
273
- ([y, p]) => new E([y, ...p])
278
+ ([d, p]) => new A([d, ...p])
274
279
  ),
275
280
  o.limit,
276
281
  o.since,
@@ -285,8 +290,8 @@ class pe extends K {
285
290
  )
286
291
  ),
287
292
  h
288
- ), w = new P(u.Subscribe, f), k = new b.Builder(2048);
289
- k.finish(w.pack(k));
293
+ ), b = new P(u.Subscribe, w), k = new f.Builder(2048);
294
+ k.finish(b.pack(k));
290
295
  const x = k.asUint8Array();
291
296
  return this.postToWorker({ serializedMessage: x }), l;
292
297
  }
@@ -297,16 +302,16 @@ class pe extends K {
297
302
  t.kind,
298
303
  t.created_at,
299
304
  this.textEncoder.encode(t.content),
300
- t.tags.map((w) => new E(w)) || []
305
+ t.tags.map((b) => new A(b)) || []
301
306
  ), a = new J(
302
307
  this.textEncoder.encode(e),
303
308
  r,
304
309
  s,
305
310
  i || []
306
- ), l = new P(u.Publish, a), h = new b.Builder(2048);
311
+ ), l = new P(u.Publish, a), h = new f.Builder(2048);
307
312
  h.finish(l.pack(h));
308
- const f = h.asUint8Array();
309
- return this.postToWorker({ serializedMessage: f }), this.publishes.set(e, { buffer: n }), n;
313
+ const w = h.asUint8Array();
314
+ return this.postToWorker({ serializedMessage: w }), this.publishes.set(e, { buffer: n }), n;
310
315
  }
311
316
  setSigner(e, t) {
312
317
  switch (this._pendingSession = { type: e, payload: t }, console.log("[main] set pending session:", e), e) {
@@ -343,7 +348,7 @@ class pe extends K {
343
348
  e.kind,
344
349
  e.created_at,
345
350
  this.textEncoder.encode(e.content),
346
- e.tags.map((n) => new E(n)) || []
351
+ e.tags.map((n) => new A(n)) || []
347
352
  ), i = new X(s);
348
353
  this.sendCryptoMessage(u.SignEvent, i);
349
354
  }
@@ -358,7 +363,7 @@ class pe extends K {
358
363
  for (const [t, s] of this.subscriptions.entries())
359
364
  s.refCount <= 0 && !this.PERPETUAL_SUBSCRIPTIONS.includes(t) && e.push(t);
360
365
  for (const t of e) {
361
- const s = new D(this.textEncoder.encode(t)), i = new P(u.Unsubscribe, s), n = new b.Builder(256);
366
+ const s = new D(this.textEncoder.encode(t)), i = new P(u.Unsubscribe, s), n = new f.Builder(256);
362
367
  n.finish(i.pack(n));
363
368
  const r = n.asUint8Array();
364
369
  this.postToWorker({ serializedMessage: r }), this.subscriptions.delete(t);