@hashtree/worker 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/capabilities/blossomBandwidthTracker.d.ts +26 -0
  4. package/dist/capabilities/blossomBandwidthTracker.d.ts.map +1 -0
  5. package/dist/capabilities/blossomBandwidthTracker.js +53 -0
  6. package/dist/capabilities/blossomBandwidthTracker.js.map +1 -0
  7. package/dist/capabilities/blossomTransport.d.ts +22 -0
  8. package/dist/capabilities/blossomTransport.d.ts.map +1 -0
  9. package/dist/capabilities/blossomTransport.js +124 -0
  10. package/dist/capabilities/blossomTransport.js.map +1 -0
  11. package/dist/capabilities/connectivity.d.ts +3 -0
  12. package/dist/capabilities/connectivity.d.ts.map +1 -0
  13. package/dist/capabilities/connectivity.js +49 -0
  14. package/dist/capabilities/connectivity.js.map +1 -0
  15. package/dist/capabilities/idbStorage.d.ts +25 -0
  16. package/dist/capabilities/idbStorage.d.ts.map +1 -0
  17. package/dist/capabilities/idbStorage.js +73 -0
  18. package/dist/capabilities/idbStorage.js.map +1 -0
  19. package/dist/client.d.ts +54 -0
  20. package/dist/client.d.ts.map +1 -0
  21. package/dist/client.js +336 -0
  22. package/dist/client.js.map +1 -0
  23. package/dist/entry.d.ts +2 -0
  24. package/dist/entry.d.ts.map +1 -0
  25. package/dist/entry.js +2 -0
  26. package/dist/entry.js.map +1 -0
  27. package/dist/index.d.ts +6 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +3 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/iris/identity.d.ts +36 -0
  32. package/dist/iris/identity.d.ts.map +1 -0
  33. package/dist/iris/identity.js +78 -0
  34. package/dist/iris/identity.js.map +1 -0
  35. package/dist/iris/mediaHandler.d.ts +16 -0
  36. package/dist/iris/mediaHandler.d.ts.map +1 -0
  37. package/dist/iris/mediaHandler.js +529 -0
  38. package/dist/iris/mediaHandler.js.map +1 -0
  39. package/dist/iris/ndk.d.ts +95 -0
  40. package/dist/iris/ndk.d.ts.map +1 -0
  41. package/dist/iris/ndk.js +496 -0
  42. package/dist/iris/ndk.js.map +1 -0
  43. package/dist/iris/nostr-wasm.d.ts +14 -0
  44. package/dist/iris/nostr-wasm.d.ts.map +1 -0
  45. package/dist/iris/nostr-wasm.js +246 -0
  46. package/dist/iris/nostr-wasm.js.map +1 -0
  47. package/dist/iris/nostr.d.ts +60 -0
  48. package/dist/iris/nostr.d.ts.map +1 -0
  49. package/dist/iris/nostr.js +207 -0
  50. package/dist/iris/nostr.js.map +1 -0
  51. package/dist/iris/protocol.d.ts +574 -0
  52. package/dist/iris/protocol.d.ts.map +1 -0
  53. package/dist/iris/protocol.js +16 -0
  54. package/dist/iris/protocol.js.map +1 -0
  55. package/dist/iris/signing.d.ts +50 -0
  56. package/dist/iris/signing.d.ts.map +1 -0
  57. package/dist/iris/signing.js +299 -0
  58. package/dist/iris/signing.js.map +1 -0
  59. package/dist/iris/treeRootCache.d.ts +73 -0
  60. package/dist/iris/treeRootCache.d.ts.map +1 -0
  61. package/dist/iris/treeRootCache.js +191 -0
  62. package/dist/iris/treeRootCache.js.map +1 -0
  63. package/dist/iris/treeRootSubscription.d.ts +49 -0
  64. package/dist/iris/treeRootSubscription.d.ts.map +1 -0
  65. package/dist/iris/treeRootSubscription.js +185 -0
  66. package/dist/iris/treeRootSubscription.js.map +1 -0
  67. package/dist/iris/utils/constants.d.ts +76 -0
  68. package/dist/iris/utils/constants.d.ts.map +1 -0
  69. package/dist/iris/utils/constants.js +113 -0
  70. package/dist/iris/utils/constants.js.map +1 -0
  71. package/dist/iris/utils/errorMessage.d.ts +5 -0
  72. package/dist/iris/utils/errorMessage.d.ts.map +1 -0
  73. package/dist/iris/utils/errorMessage.js +8 -0
  74. package/dist/iris/utils/errorMessage.js.map +1 -0
  75. package/dist/iris/utils/lruCache.d.ts +26 -0
  76. package/dist/iris/utils/lruCache.d.ts.map +1 -0
  77. package/dist/iris/utils/lruCache.js +66 -0
  78. package/dist/iris/utils/lruCache.js.map +1 -0
  79. package/dist/iris/webrtc.d.ts +2 -0
  80. package/dist/iris/webrtc.d.ts.map +1 -0
  81. package/dist/iris/webrtc.js +3 -0
  82. package/dist/iris/webrtc.js.map +1 -0
  83. package/dist/iris/webrtcSignaling.d.ts +37 -0
  84. package/dist/iris/webrtcSignaling.d.ts.map +1 -0
  85. package/dist/iris/webrtcSignaling.js +86 -0
  86. package/dist/iris/webrtcSignaling.js.map +1 -0
  87. package/dist/iris/worker.d.ts +12 -0
  88. package/dist/iris/worker.d.ts.map +1 -0
  89. package/dist/iris/worker.js +1582 -0
  90. package/dist/iris/worker.js.map +1 -0
  91. package/dist/iris-entry.d.ts +2 -0
  92. package/dist/iris-entry.d.ts.map +1 -0
  93. package/dist/iris-entry.js +2 -0
  94. package/dist/iris-entry.js.map +1 -0
  95. package/dist/mediaStreaming.d.ts +7 -0
  96. package/dist/mediaStreaming.d.ts.map +1 -0
  97. package/dist/mediaStreaming.js +48 -0
  98. package/dist/mediaStreaming.js.map +1 -0
  99. package/dist/p2p/boundedQueue.d.ts +74 -0
  100. package/dist/p2p/boundedQueue.d.ts.map +1 -0
  101. package/dist/p2p/boundedQueue.js +112 -0
  102. package/dist/p2p/boundedQueue.js.map +1 -0
  103. package/dist/p2p/errorMessage.d.ts +5 -0
  104. package/dist/p2p/errorMessage.d.ts.map +1 -0
  105. package/dist/p2p/errorMessage.js +7 -0
  106. package/dist/p2p/errorMessage.js.map +1 -0
  107. package/dist/p2p/index.d.ts +7 -0
  108. package/dist/p2p/index.d.ts.map +1 -0
  109. package/dist/p2p/index.js +5 -0
  110. package/dist/p2p/index.js.map +1 -0
  111. package/dist/p2p/lruCache.d.ts +26 -0
  112. package/dist/p2p/lruCache.d.ts.map +1 -0
  113. package/dist/p2p/lruCache.js +65 -0
  114. package/dist/p2p/lruCache.js.map +1 -0
  115. package/dist/p2p/protocol.d.ts +10 -0
  116. package/dist/p2p/protocol.d.ts.map +1 -0
  117. package/dist/p2p/protocol.js +2 -0
  118. package/dist/p2p/protocol.js.map +1 -0
  119. package/dist/p2p/queryForwardingMachine.d.ts +46 -0
  120. package/dist/p2p/queryForwardingMachine.d.ts.map +1 -0
  121. package/dist/p2p/queryForwardingMachine.js +144 -0
  122. package/dist/p2p/queryForwardingMachine.js.map +1 -0
  123. package/dist/p2p/signaling.d.ts +63 -0
  124. package/dist/p2p/signaling.d.ts.map +1 -0
  125. package/dist/p2p/signaling.js +165 -0
  126. package/dist/p2p/signaling.js.map +1 -0
  127. package/dist/p2p/webrtcController.d.ts +152 -0
  128. package/dist/p2p/webrtcController.d.ts.map +1 -0
  129. package/dist/p2p/webrtcController.js +813 -0
  130. package/dist/p2p/webrtcController.js.map +1 -0
  131. package/dist/p2p/webrtcProxy.d.ts +55 -0
  132. package/dist/p2p/webrtcProxy.d.ts.map +1 -0
  133. package/dist/p2p/webrtcProxy.js +386 -0
  134. package/dist/p2p/webrtcProxy.js.map +1 -0
  135. package/dist/privacyGuards.d.ts +14 -0
  136. package/dist/privacyGuards.d.ts.map +1 -0
  137. package/dist/privacyGuards.js +27 -0
  138. package/dist/privacyGuards.js.map +1 -0
  139. package/dist/protocol.d.ts +171 -0
  140. package/dist/protocol.d.ts.map +1 -0
  141. package/dist/protocol.js +2 -0
  142. package/dist/protocol.js.map +1 -0
  143. package/dist/types.d.ts +2 -0
  144. package/dist/types.d.ts.map +1 -0
  145. package/dist/types.js +2 -0
  146. package/dist/types.js.map +1 -0
  147. package/dist/worker.d.ts +2 -0
  148. package/dist/worker.d.ts.map +1 -0
  149. package/dist/worker.js +616 -0
  150. package/dist/worker.js.map +1 -0
  151. package/package.json +64 -0
@@ -0,0 +1,86 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * WebRTC Signaling Handler for Hashtree Worker
4
+ *
5
+ * Handles WebRTC signaling via Nostr (kind 25050).
6
+ * - Hello messages: broadcast with #l tag for peer discovery
7
+ * - Directed messages (offer/answer/candidates): gift-wrapped for privacy
8
+ */
9
+ import { createSignalingFilters, decodeSignalingEvent, sendSignalingMessage, } from '../p2p/signaling.js';
10
+ import { subscribe as ndkSubscribe, publish as ndkPublish } from './ndk';
11
+ import { signEvent, giftWrap, giftUnwrap } from './signing';
12
+ let webrtc = null;
13
+ let signalingPubkey = null;
14
+ /**
15
+ * Initialize the WebRTC signaling handler
16
+ */
17
+ export function initWebRTCSignaling(controller) {
18
+ webrtc = controller;
19
+ }
20
+ /**
21
+ * Send WebRTC signaling message via Nostr (kind 25050)
22
+ * - Hello messages: broadcast with #l tag
23
+ * - Directed messages (offer/answer/candidates): gift-wrapped
24
+ */
25
+ export async function sendWebRTCSignaling(msg, recipientPubkey) {
26
+ try {
27
+ await sendSignalingMessage({
28
+ msg,
29
+ recipientPubkey,
30
+ signEvent,
31
+ giftWrap,
32
+ publish: ndkPublish,
33
+ });
34
+ }
35
+ catch (err) {
36
+ console.error('[Worker] Failed to send WebRTC signaling:', err);
37
+ }
38
+ }
39
+ /**
40
+ * Subscribe to WebRTC signaling events.
41
+ * NOTE: The caller must set up the event handler via setOnEvent
42
+ * and route webrtc-* subscriptions to handleWebRTCSignalingEvent.
43
+ */
44
+ export function setupWebRTCSignalingSubscription(myPubkey) {
45
+ signalingPubkey = myPubkey;
46
+ const { since, helloFilter, directedFilter } = createSignalingFilters(myPubkey);
47
+ console.log('[WebRTC Signaling] Setting up subscriptions for', myPubkey.slice(0, 16), 'since', since);
48
+ // Subscribe to hello messages (broadcast discovery)
49
+ console.log('[WebRTC Signaling] Creating webrtc-hello subscription');
50
+ ndkSubscribe('webrtc-hello', [helloFilter]);
51
+ // Subscribe to directed signaling (offers/answers to us)
52
+ console.log('[WebRTC Signaling] Creating webrtc-directed subscription');
53
+ ndkSubscribe('webrtc-directed', [directedFilter]);
54
+ console.log('[WebRTC Signaling] Subscriptions setup complete');
55
+ }
56
+ /**
57
+ * Re-subscribe to WebRTC signaling after relay change.
58
+ * Call this after setRelays to ensure subscriptions work on new relays.
59
+ */
60
+ export function resubscribeWebRTCSignaling() {
61
+ if (!signalingPubkey) {
62
+ console.warn('[WebRTC Signaling] Cannot resubscribe - no pubkey set');
63
+ return;
64
+ }
65
+ console.log('[WebRTC Signaling] Resubscribing with pubkey:', signalingPubkey.slice(0, 16));
66
+ setupWebRTCSignalingSubscription(signalingPubkey);
67
+ console.log('[WebRTC Signaling] Resubscription complete');
68
+ }
69
+ /**
70
+ * Handle incoming WebRTC signaling event.
71
+ * Call this from the unified NostrManager event handler for webrtc-* subscriptions.
72
+ */
73
+ export async function handleWebRTCSignalingEvent(event) {
74
+ const decoded = await decodeSignalingEvent({
75
+ event,
76
+ giftUnwrap,
77
+ });
78
+ if (!decoded) {
79
+ return;
80
+ }
81
+ if (decoded.message.type !== 'hello') {
82
+ console.log('[WebRTC] Unwrapped message:', decoded.message.type, 'from', decoded.senderPubkey.slice(0, 8));
83
+ }
84
+ webrtc?.handleSignalingMessage(decoded.message, decoded.senderPubkey);
85
+ }
86
+ //# sourceMappingURL=webrtcSignaling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtcSignaling.js","sourceRoot":"","sources":["../../src/iris/webrtcSignaling.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;;GAMG;AAKH,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5D,IAAI,MAAM,GAA4B,IAAI,CAAC;AAC3C,IAAI,eAAe,GAAkB,IAAI,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAA4B;IAC9D,MAAM,GAAG,UAAU,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAqB,EACrB,eAAwB;IAExB,IAAI,CAAC;QACH,MAAM,oBAAoB,CAAc;YACtC,GAAG;YACH,eAAe;YACf,SAAS;YACT,QAAQ;YACR,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAAC,QAAgB;IAC/D,eAAe,GAAG,QAAQ,CAAC;IAC3B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEhF,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEtG,oDAAoD;IACpD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,YAAY,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5C,yDAAyD;IACzD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,YAAY,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3F,gCAAgC,CAAC,eAAe,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,KAAkB;IACjE,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC;QACzC,KAAK;QACL,UAAU;KACX,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IAED,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Hashtree Worker
3
+ *
4
+ * Dedicated worker that owns:
5
+ * - HashTree + DexieStore (IndexedDB storage)
6
+ * - WebRTC peer connections (P2P data transfer)
7
+ *
8
+ * Main thread communicates via postMessage.
9
+ * NIP-07 signing/encryption delegated back to main thread.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/iris/worker.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG"}