@hashtree/worker 0.2.1 → 0.2.3

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 (212) hide show
  1. package/LICENSE +21 -0
  2. package/dist/app-runtime.d.ts +60 -0
  3. package/dist/app-runtime.d.ts.map +1 -0
  4. package/dist/app-runtime.js +271 -0
  5. package/dist/app-runtime.js.map +1 -0
  6. package/dist/capabilities/blossomBandwidthTracker.d.ts +26 -0
  7. package/dist/capabilities/blossomBandwidthTracker.d.ts.map +1 -0
  8. package/dist/capabilities/blossomBandwidthTracker.js +53 -0
  9. package/dist/capabilities/blossomBandwidthTracker.js.map +1 -0
  10. package/dist/capabilities/blossomTransport.d.ts +22 -0
  11. package/dist/capabilities/blossomTransport.d.ts.map +1 -0
  12. package/dist/capabilities/blossomTransport.js +139 -0
  13. package/dist/capabilities/blossomTransport.js.map +1 -0
  14. package/dist/capabilities/connectivity.d.ts +3 -0
  15. package/dist/capabilities/connectivity.d.ts.map +1 -0
  16. package/dist/capabilities/connectivity.js +49 -0
  17. package/dist/capabilities/connectivity.js.map +1 -0
  18. package/dist/capabilities/idbStorage.d.ts +25 -0
  19. package/dist/capabilities/idbStorage.d.ts.map +1 -0
  20. package/dist/capabilities/idbStorage.js +73 -0
  21. package/dist/capabilities/idbStorage.js.map +1 -0
  22. package/dist/capabilities/meshRouterStore.d.ts +71 -0
  23. package/dist/capabilities/meshRouterStore.d.ts.map +1 -0
  24. package/dist/capabilities/meshRouterStore.js +316 -0
  25. package/dist/capabilities/meshRouterStore.js.map +1 -0
  26. package/dist/capabilities/rootResolver.d.ts +10 -0
  27. package/dist/capabilities/rootResolver.d.ts.map +1 -0
  28. package/dist/capabilities/rootResolver.js +392 -0
  29. package/dist/capabilities/rootResolver.js.map +1 -0
  30. package/dist/client-id.d.ts +18 -0
  31. package/dist/client-id.d.ts.map +1 -0
  32. package/dist/client-id.js +98 -0
  33. package/dist/client-id.js.map +1 -0
  34. package/dist/client.d.ts +61 -0
  35. package/dist/client.d.ts.map +1 -0
  36. package/dist/client.js +417 -0
  37. package/dist/client.js.map +1 -0
  38. package/dist/entry.d.ts +2 -0
  39. package/dist/entry.d.ts.map +1 -0
  40. package/dist/entry.js +3 -0
  41. package/dist/entry.js.map +1 -0
  42. package/dist/htree-path.d.ts +13 -0
  43. package/dist/htree-path.d.ts.map +1 -0
  44. package/dist/htree-path.js +38 -0
  45. package/dist/htree-path.js.map +1 -0
  46. package/dist/htree-url.d.ts +22 -0
  47. package/dist/htree-url.d.ts.map +1 -0
  48. package/dist/htree-url.js +118 -0
  49. package/dist/htree-url.js.map +1 -0
  50. package/dist/index.d.ts +17 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +8 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/mediaStreaming.d.ts +7 -0
  55. package/dist/mediaStreaming.d.ts.map +1 -0
  56. package/dist/mediaStreaming.js +48 -0
  57. package/dist/mediaStreaming.js.map +1 -0
  58. package/dist/p2p/boundedQueue.d.ts +79 -0
  59. package/dist/p2p/boundedQueue.d.ts.map +1 -0
  60. package/dist/p2p/boundedQueue.js +134 -0
  61. package/dist/p2p/boundedQueue.js.map +1 -0
  62. package/dist/p2p/errorMessage.d.ts +5 -0
  63. package/dist/p2p/errorMessage.d.ts.map +1 -0
  64. package/dist/p2p/errorMessage.js +7 -0
  65. package/dist/p2p/errorMessage.js.map +1 -0
  66. package/dist/p2p/index.d.ts +8 -0
  67. package/dist/p2p/index.d.ts.map +1 -0
  68. package/dist/p2p/index.js +6 -0
  69. package/dist/p2p/index.js.map +1 -0
  70. package/dist/p2p/lruCache.d.ts +26 -0
  71. package/dist/p2p/lruCache.d.ts.map +1 -0
  72. package/dist/p2p/lruCache.js +65 -0
  73. package/dist/p2p/lruCache.js.map +1 -0
  74. package/dist/p2p/meshQueryRouter.d.ts +57 -0
  75. package/dist/p2p/meshQueryRouter.d.ts.map +1 -0
  76. package/dist/p2p/meshQueryRouter.js +264 -0
  77. package/dist/p2p/meshQueryRouter.js.map +1 -0
  78. package/dist/p2p/protocol.d.ts +10 -0
  79. package/dist/p2p/protocol.d.ts.map +1 -0
  80. package/dist/p2p/protocol.js +2 -0
  81. package/dist/p2p/protocol.js.map +1 -0
  82. package/dist/p2p/queryForwardingMachine.d.ts +46 -0
  83. package/dist/p2p/queryForwardingMachine.d.ts.map +1 -0
  84. package/dist/p2p/queryForwardingMachine.js +144 -0
  85. package/dist/p2p/queryForwardingMachine.js.map +1 -0
  86. package/dist/p2p/signaling.d.ts +63 -0
  87. package/dist/p2p/signaling.d.ts.map +1 -0
  88. package/dist/p2p/signaling.js +185 -0
  89. package/dist/p2p/signaling.js.map +1 -0
  90. package/dist/p2p/uploadRateLimiter.d.ts +21 -0
  91. package/dist/p2p/uploadRateLimiter.d.ts.map +1 -0
  92. package/dist/p2p/uploadRateLimiter.js +62 -0
  93. package/dist/p2p/uploadRateLimiter.js.map +1 -0
  94. package/dist/p2p/webrtcController.d.ts +176 -0
  95. package/dist/p2p/webrtcController.d.ts.map +1 -0
  96. package/dist/p2p/webrtcController.js +938 -0
  97. package/dist/p2p/webrtcController.js.map +1 -0
  98. package/dist/p2p/webrtcProxy.d.ts +62 -0
  99. package/dist/p2p/webrtcProxy.d.ts.map +1 -0
  100. package/dist/p2p/webrtcProxy.js +447 -0
  101. package/dist/p2p/webrtcProxy.js.map +1 -0
  102. package/dist/privacyGuards.d.ts +14 -0
  103. package/dist/privacyGuards.d.ts.map +1 -0
  104. package/dist/privacyGuards.js +27 -0
  105. package/dist/privacyGuards.js.map +1 -0
  106. package/dist/protocol.d.ts +225 -0
  107. package/dist/protocol.d.ts.map +1 -0
  108. package/dist/protocol.js +2 -0
  109. package/dist/protocol.js.map +1 -0
  110. package/dist/relay/identity.d.ts +36 -0
  111. package/dist/relay/identity.d.ts.map +1 -0
  112. package/dist/relay/identity.js +78 -0
  113. package/dist/relay/identity.js.map +1 -0
  114. package/dist/relay/mediaHandler.d.ts +64 -0
  115. package/dist/relay/mediaHandler.d.ts.map +1 -0
  116. package/dist/relay/mediaHandler.js +1285 -0
  117. package/dist/relay/mediaHandler.js.map +1 -0
  118. package/dist/relay/ndk.d.ts +96 -0
  119. package/dist/relay/ndk.d.ts.map +1 -0
  120. package/dist/relay/ndk.js +502 -0
  121. package/dist/relay/ndk.js.map +1 -0
  122. package/dist/relay/nostr-wasm.d.ts +14 -0
  123. package/dist/relay/nostr-wasm.d.ts.map +1 -0
  124. package/dist/relay/nostr-wasm.js +246 -0
  125. package/dist/relay/nostr-wasm.js.map +1 -0
  126. package/dist/relay/nostr.d.ts +60 -0
  127. package/dist/relay/nostr.d.ts.map +1 -0
  128. package/dist/relay/nostr.js +207 -0
  129. package/dist/relay/nostr.js.map +1 -0
  130. package/dist/relay/protocol.d.ts +592 -0
  131. package/dist/relay/protocol.d.ts.map +1 -0
  132. package/dist/relay/protocol.js +16 -0
  133. package/dist/relay/protocol.js.map +1 -0
  134. package/dist/relay/publicAssetUrl.d.ts +6 -0
  135. package/dist/relay/publicAssetUrl.d.ts.map +1 -0
  136. package/dist/relay/publicAssetUrl.js +14 -0
  137. package/dist/relay/publicAssetUrl.js.map +1 -0
  138. package/dist/relay/rootPathResolver.d.ts +9 -0
  139. package/dist/relay/rootPathResolver.d.ts.map +1 -0
  140. package/dist/relay/rootPathResolver.js +32 -0
  141. package/dist/relay/rootPathResolver.js.map +1 -0
  142. package/dist/relay/signing.d.ts +50 -0
  143. package/dist/relay/signing.d.ts.map +1 -0
  144. package/dist/relay/signing.js +299 -0
  145. package/dist/relay/signing.js.map +1 -0
  146. package/dist/relay/treeRootCache.d.ts +86 -0
  147. package/dist/relay/treeRootCache.d.ts.map +1 -0
  148. package/dist/relay/treeRootCache.js +269 -0
  149. package/dist/relay/treeRootCache.js.map +1 -0
  150. package/dist/relay/treeRootSubscription.d.ts +55 -0
  151. package/dist/relay/treeRootSubscription.d.ts.map +1 -0
  152. package/dist/relay/treeRootSubscription.js +478 -0
  153. package/dist/relay/treeRootSubscription.js.map +1 -0
  154. package/dist/relay/utils/constants.d.ts +76 -0
  155. package/dist/relay/utils/constants.d.ts.map +1 -0
  156. package/dist/relay/utils/constants.js +113 -0
  157. package/dist/relay/utils/constants.js.map +1 -0
  158. package/dist/relay/utils/errorMessage.d.ts +5 -0
  159. package/dist/relay/utils/errorMessage.d.ts.map +1 -0
  160. package/dist/relay/utils/errorMessage.js +8 -0
  161. package/dist/relay/utils/errorMessage.js.map +1 -0
  162. package/dist/relay/utils/lruCache.d.ts +26 -0
  163. package/dist/relay/utils/lruCache.d.ts.map +1 -0
  164. package/dist/relay/utils/lruCache.js +66 -0
  165. package/dist/relay/utils/lruCache.js.map +1 -0
  166. package/dist/relay/webrtc.d.ts +2 -0
  167. package/dist/relay/webrtc.d.ts.map +1 -0
  168. package/dist/relay/webrtc.js +3 -0
  169. package/dist/relay/webrtc.js.map +1 -0
  170. package/dist/relay/webrtcSignaling.d.ts +37 -0
  171. package/dist/relay/webrtcSignaling.d.ts.map +1 -0
  172. package/dist/relay/webrtcSignaling.js +86 -0
  173. package/dist/relay/webrtcSignaling.js.map +1 -0
  174. package/dist/relay/worker.d.ts +12 -0
  175. package/dist/relay/worker.d.ts.map +1 -0
  176. package/dist/relay/worker.js +1540 -0
  177. package/dist/relay/worker.js.map +1 -0
  178. package/dist/relay-client.d.ts +31 -0
  179. package/dist/relay-client.d.ts.map +1 -0
  180. package/dist/relay-client.js +197 -0
  181. package/dist/relay-client.js.map +1 -0
  182. package/dist/relay-entry.d.ts +2 -0
  183. package/dist/relay-entry.d.ts.map +1 -0
  184. package/dist/relay-entry.js +2 -0
  185. package/dist/relay-entry.js.map +1 -0
  186. package/dist/runtime-network.d.ts +23 -0
  187. package/dist/runtime-network.d.ts.map +1 -0
  188. package/dist/runtime-network.js +105 -0
  189. package/dist/runtime-network.js.map +1 -0
  190. package/dist/runtime.d.ts +24 -0
  191. package/dist/runtime.d.ts.map +1 -0
  192. package/dist/runtime.js +126 -0
  193. package/dist/runtime.js.map +1 -0
  194. package/dist/transferableBytes.d.ts +2 -0
  195. package/dist/transferableBytes.d.ts.map +1 -0
  196. package/dist/transferableBytes.js +6 -0
  197. package/dist/transferableBytes.js.map +1 -0
  198. package/dist/tree-root.d.ts +201 -0
  199. package/dist/tree-root.d.ts.map +1 -0
  200. package/dist/tree-root.js +632 -0
  201. package/dist/tree-root.js.map +1 -0
  202. package/dist/types.d.ts +2 -0
  203. package/dist/types.d.ts.map +1 -0
  204. package/dist/types.js +2 -0
  205. package/dist/types.js.map +1 -0
  206. package/dist/worker.d.ts +9 -0
  207. package/dist/worker.d.ts.map +1 -0
  208. package/dist/worker.js +793 -0
  209. package/dist/worker.js.map +1 -0
  210. package/package.json +14 -14
  211. package/src/capabilities/blossomTransport.ts +1 -1
  212. package/src/worker.ts +2 -1
@@ -0,0 +1,502 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * NDK instance for Worker
4
+ *
5
+ * Runs NDK with:
6
+ * - Real relay connections
7
+ * - ndk-cache (Dexie) for IndexedDB caching
8
+ * - nostr-wasm for fast signature verification
9
+ *
10
+ * Main thread communicates via WorkerAdapter postMessage.
11
+ */
12
+ import NDK, { NDKEvent, NDKPrivateKeySigner, NDKSubscriptionCacheUsage, } from 'ndk';
13
+ import NDKCacheAdapterDexie from 'ndk-cache';
14
+ import { verifyEvent, matchFilter } from 'nostr-tools';
15
+ import { NostrWasm } from './nostr-wasm';
16
+ import { resolveWorkerPublicAssetUrl } from './publicAssetUrl';
17
+ // NDK instance - initialized lazily
18
+ let ndk = null;
19
+ let wasmVerifier = null;
20
+ let wasmLoading = false;
21
+ // Event callbacks
22
+ let onEventCallback = null;
23
+ let onEoseCallback = null;
24
+ // Active subscriptions
25
+ const subscriptions = new Map();
26
+ /**
27
+ * Load nostr-wasm from public wasm file (not base64 inlined)
28
+ * Runs in background - verification falls back to JS until loaded
29
+ */
30
+ async function loadNostrWasm() {
31
+ if (wasmVerifier || wasmLoading)
32
+ return;
33
+ wasmLoading = true;
34
+ try {
35
+ // Fetch wasm from public directory (not base64 inlined)
36
+ const response = fetch(resolveWorkerPublicAssetUrl(import.meta.env.BASE_URL, 'secp256k1.wasm', {
37
+ importMetaUrl: import.meta.url,
38
+ origin: self.location.origin,
39
+ }));
40
+ wasmVerifier = await NostrWasm(response);
41
+ console.log('[Worker NDK] nostr-wasm loaded from wasm file');
42
+ }
43
+ catch (err) {
44
+ console.warn('[Worker NDK] nostr-wasm load failed, using JS fallback:', err);
45
+ }
46
+ finally {
47
+ wasmLoading = false;
48
+ }
49
+ }
50
+ /**
51
+ * Custom signature verification function for NDK
52
+ * Uses nostr-wasm if loaded, falls back to nostr-tools
53
+ */
54
+ async function verifySignature(event) {
55
+ if (wasmVerifier) {
56
+ try {
57
+ // nostr-wasm verifyEvent checks both id hash and signature
58
+ wasmVerifier.verifyEvent({
59
+ id: event.id,
60
+ pubkey: event.pubkey,
61
+ created_at: event.created_at,
62
+ kind: event.kind,
63
+ tags: event.tags,
64
+ content: event.content,
65
+ sig: event.sig,
66
+ });
67
+ return true;
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ }
73
+ // Fallback to nostr-tools until wasm loads
74
+ // Don't call event.verifySignature() - that would cause infinite recursion
75
+ return verifyEvent({
76
+ id: event.id,
77
+ pubkey: event.pubkey,
78
+ created_at: event.created_at,
79
+ kind: event.kind,
80
+ tags: event.tags,
81
+ content: event.content,
82
+ sig: event.sig,
83
+ });
84
+ }
85
+ /**
86
+ * Initialize NDK with cache and nostr-wasm
87
+ */
88
+ export async function initNdk(relays, options = {}) {
89
+ // Create cache adapter
90
+ const cacheAdapter = new NDKCacheAdapterDexie({ dbName: 'hashtree-ndk-worker', eventCacheSize: 5000 });
91
+ // Create NDK instance
92
+ ndk = new NDK({
93
+ explicitRelayUrls: relays,
94
+ cacheAdapter,
95
+ // Custom verification - will use wasm when loaded, JS fallback until then
96
+ signatureVerificationFunction: verifySignature,
97
+ });
98
+ // Set up signer if nsec provided
99
+ if (options.nsec) {
100
+ ndk.signer = new NDKPrivateKeySigner(options.nsec);
101
+ }
102
+ // Connect to relays immediately, but don't block init on network latency.
103
+ // Subscriptions will attach as relays come online.
104
+ const connectPromise = ndk.connect();
105
+ // Wait for at least one relay to connect (with timeout)
106
+ const CONNECTION_TIMEOUT = 5000;
107
+ const connectionWait = new Promise((resolve) => {
108
+ const startTime = Date.now();
109
+ const checkConnection = () => {
110
+ const connected = ndk?.pool?.connectedRelays();
111
+ if (connected && connected.size > 0) {
112
+ console.log('[Worker NDK] At least one relay connected');
113
+ resolve();
114
+ return;
115
+ }
116
+ if (Date.now() - startTime > CONNECTION_TIMEOUT) {
117
+ console.warn('[Worker NDK] Connection timeout, proceeding anyway');
118
+ resolve();
119
+ return;
120
+ }
121
+ setTimeout(checkConnection, 50);
122
+ };
123
+ checkConnection();
124
+ });
125
+ void connectionWait;
126
+ // Log when all relays are connected (async, don't block)
127
+ connectPromise.then(() => {
128
+ console.log('[Worker NDK] All relays connected');
129
+ });
130
+ // Lazy load nostr-wasm in background
131
+ loadNostrWasm();
132
+ console.log('[Worker NDK] Initialized with', relays.length, 'relays');
133
+ }
134
+ /**
135
+ * Get the NDK instance
136
+ */
137
+ export function getNdk() {
138
+ return ndk;
139
+ }
140
+ /**
141
+ * Set event callback
142
+ */
143
+ export function setOnEvent(callback) {
144
+ onEventCallback = callback;
145
+ }
146
+ /**
147
+ * Set EOSE callback
148
+ */
149
+ export function setOnEose(callback) {
150
+ onEoseCallback = callback;
151
+ }
152
+ /**
153
+ * Subscribe to events
154
+ */
155
+ export function subscribe(subId, filters, opts) {
156
+ if (!ndk) {
157
+ console.error('[Worker NDK] Not initialized');
158
+ return;
159
+ }
160
+ // Close existing subscription with same ID
161
+ unsubscribe(subId);
162
+ // Convert NostrFilter to NDKFilter
163
+ const ndkFilters = filters.map(f => {
164
+ const filter = {
165
+ ids: f.ids,
166
+ authors: f.authors,
167
+ kinds: f.kinds,
168
+ since: f.since,
169
+ until: f.until,
170
+ limit: f.limit,
171
+ };
172
+ // Copy tag filters
173
+ for (const key of Object.keys(f)) {
174
+ if (key.startsWith('#')) {
175
+ filter[key] = f[key];
176
+ }
177
+ }
178
+ return filter;
179
+ });
180
+ // skipValidation: nostr-wasm verifyEvent handles structure validation
181
+ const sub = ndk.subscribe(ndkFilters, {
182
+ closeOnEose: false,
183
+ skipValidation: true,
184
+ cacheUsage: opts?.cacheUsage ?? NDKSubscriptionCacheUsage.CACHE_FIRST,
185
+ });
186
+ sub.on('event', (event) => {
187
+ const signedEvent = {
188
+ id: event.id,
189
+ pubkey: event.pubkey,
190
+ kind: event.kind,
191
+ content: event.content,
192
+ tags: event.tags,
193
+ created_at: event.created_at,
194
+ sig: event.sig,
195
+ };
196
+ if (onEventCallback) {
197
+ Promise.resolve(onEventCallback(subId, signedEvent)).catch((err) => {
198
+ console.warn('[Worker NDK] onEvent callback failed:', err);
199
+ });
200
+ }
201
+ });
202
+ sub.on('eose', () => {
203
+ onEoseCallback?.(subId);
204
+ });
205
+ subscriptions.set(subId, sub);
206
+ }
207
+ /**
208
+ * Unsubscribe
209
+ */
210
+ export function unsubscribe(subId) {
211
+ const sub = subscriptions.get(subId);
212
+ if (sub) {
213
+ sub.stop();
214
+ subscriptions.delete(subId);
215
+ }
216
+ }
217
+ /**
218
+ * Publish an event
219
+ */
220
+ export async function publish(event) {
221
+ if (!ndk) {
222
+ throw new Error('NDK not initialized');
223
+ }
224
+ const ndkEvent = new NDKEvent(ndk, {
225
+ id: event.id,
226
+ pubkey: event.pubkey,
227
+ kind: event.kind,
228
+ content: event.content,
229
+ tags: event.tags,
230
+ created_at: event.created_at,
231
+ sig: event.sig,
232
+ });
233
+ await ndkEvent.publish();
234
+ // Dispatch to local subscriptions that match this event
235
+ // NDK doesn't echo published events back to sender, so we do it locally
236
+ if (onEventCallback) {
237
+ for (const [subId, sub] of subscriptions) {
238
+ // Get the filters from the subscription (NDK stores them on the subscription object)
239
+ const filters = sub.filters || [];
240
+ for (const filter of filters) {
241
+ if (matchFilter(filter, event)) {
242
+ Promise.resolve(onEventCallback(subId, event)).catch((err) => {
243
+ console.warn('[Worker NDK] onEvent callback failed:', err);
244
+ });
245
+ break; // Only dispatch once per subscription
246
+ }
247
+ }
248
+ }
249
+ }
250
+ }
251
+ /**
252
+ * Close NDK and all subscriptions
253
+ */
254
+ export function closeNdk() {
255
+ for (const [subId, sub] of subscriptions) {
256
+ sub.stop();
257
+ console.log('[Worker NDK] Closed subscription:', subId);
258
+ }
259
+ subscriptions.clear();
260
+ // NDK doesn't have a close method, but we can disconnect relays
261
+ if (ndk?.pool) {
262
+ for (const relay of ndk.pool.relays.values()) {
263
+ relay.disconnect();
264
+ }
265
+ }
266
+ ndk = null;
267
+ console.log('[Worker NDK] Closed');
268
+ }
269
+ /**
270
+ * Update relays dynamically
271
+ * Disconnects old relays and connects to new ones
272
+ */
273
+ export async function setRelays(relays) {
274
+ if (!ndk?.pool) {
275
+ console.warn('[Worker NDK] Cannot setRelays - NDK not initialized');
276
+ return;
277
+ }
278
+ console.log('[Worker NDK] Updating relays:', relays);
279
+ try {
280
+ // Disconnect all current relays
281
+ for (const relay of ndk.pool.relays.values()) {
282
+ try {
283
+ relay.disconnect();
284
+ }
285
+ catch (e) {
286
+ console.warn('[Worker NDK] Error disconnecting relay:', e);
287
+ }
288
+ }
289
+ // Clear the relay pool
290
+ ndk.pool.relays.clear();
291
+ // Add new relays
292
+ for (const url of relays) {
293
+ try {
294
+ ndk.addExplicitRelay(url);
295
+ }
296
+ catch (e) {
297
+ console.warn('[Worker NDK] Error adding relay:', url, e);
298
+ }
299
+ }
300
+ // Reconnect with timeout
301
+ const connectPromise = ndk.connect();
302
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Connect timeout')), 10000));
303
+ await Promise.race([connectPromise, timeoutPromise]).catch(e => {
304
+ console.warn('[Worker NDK] Connect timeout/error, proceeding anyway:', e);
305
+ });
306
+ console.log('[Worker NDK] Relays updated, connected to', relays.length, 'relays');
307
+ }
308
+ catch (e) {
309
+ console.error('[Worker NDK] Error in setRelays:', e);
310
+ }
311
+ }
312
+ /**
313
+ * Get relay stats
314
+ */
315
+ export function getRelayStats() {
316
+ if (!ndk?.pool)
317
+ return [];
318
+ const stats = [];
319
+ for (const relay of ndk.pool.relays.values()) {
320
+ stats.push({
321
+ url: relay.url,
322
+ connected: relay.status >= 5, // NDKRelayStatus.CONNECTED = 5
323
+ eventsReceived: 0, // TODO: track this
324
+ eventsSent: 0,
325
+ });
326
+ }
327
+ return stats;
328
+ }
329
+ /**
330
+ * Republish all user's hashtree events from cache to relays
331
+ * This helps recover when events exist locally but weren't properly published
332
+ *
333
+ * For unsigned events (never signed), we sign them using the worker's signing flow.
334
+ * For signed events, we republish directly.
335
+ * Also pushes blob data to Blossom servers.
336
+ *
337
+ * @param prefix - Optional URL-encoded prefix to filter trees by d-tag
338
+ */
339
+ export async function republishTrees(pubkey, signFn, pushToBlossomFn, prefix) {
340
+ if (!ndk) {
341
+ throw new Error('NDK not initialized');
342
+ }
343
+ // Decode prefix if provided (it's URL-encoded)
344
+ const decodedPrefix = prefix ? decodeURIComponent(prefix) : undefined;
345
+ console.log('[Worker NDK] Republishing trees for', pubkey, decodedPrefix ? `with prefix: ${decodedPrefix}` : '');
346
+ // Fetch user's hashtree events from cache and relays
347
+ const filter = {
348
+ kinds: [30078],
349
+ authors: [pubkey],
350
+ '#l': ['hashtree'],
351
+ };
352
+ // Fetch events (will check cache first)
353
+ const events = await ndk.fetchEvents(filter);
354
+ console.log('[Worker NDK] Found', events.size, 'events');
355
+ // Filter by prefix if provided
356
+ const filteredEvents = decodedPrefix
357
+ ? Array.from(events).filter(event => {
358
+ const dTag = event.tags.find(t => t[0] === 'd')?.[1];
359
+ return dTag?.startsWith(decodedPrefix);
360
+ })
361
+ : Array.from(events);
362
+ console.log('[Worker NDK] After prefix filter:', filteredEvents.length, 'events');
363
+ let count = 0;
364
+ let skippedNoHash = 0;
365
+ for (const event of filteredEvents) {
366
+ // Skip events without a hash tag (deleted trees)
367
+ const hasHash = event.tags.some(t => t[0] === 'hash' && t[1]);
368
+ if (!hasHash) {
369
+ skippedNoHash++;
370
+ continue;
371
+ }
372
+ const dTag = event.tags.find(t => t[0] === 'd')?.[1];
373
+ try {
374
+ const relaySet = ndk.pool?.connectedRelays();
375
+ if (!relaySet || relaySet.size === 0) {
376
+ console.warn('[Worker NDK] No connected relays');
377
+ continue;
378
+ }
379
+ let signedEvent;
380
+ if (event.sig) {
381
+ // Already signed - use existing event
382
+ console.log('[Worker NDK] Republishing signed event:', dTag);
383
+ signedEvent = event;
384
+ }
385
+ else {
386
+ // Unsigned event - sign it using worker's signing flow
387
+ console.log('[Worker NDK] Signing:', dTag);
388
+ const template = {
389
+ kind: 30078,
390
+ created_at: Math.floor(Date.now() / 1000),
391
+ content: event.content || '',
392
+ tags: event.tags,
393
+ };
394
+ const signed = await signFn(template);
395
+ // Create NDKEvent from signed event
396
+ signedEvent = new NDKEvent(ndk, {
397
+ id: signed.id,
398
+ pubkey: signed.pubkey,
399
+ kind: signed.kind,
400
+ content: signed.content,
401
+ tags: signed.tags,
402
+ created_at: signed.created_at,
403
+ sig: signed.sig,
404
+ });
405
+ }
406
+ // Publish to all connected relays
407
+ const promises = Array.from(relaySet).map(async (relay) => {
408
+ try {
409
+ await relay.publish(signedEvent);
410
+ }
411
+ catch (e) {
412
+ console.warn('[Worker NDK] Failed to publish to relay:', relay.url, e);
413
+ }
414
+ });
415
+ await Promise.all(promises);
416
+ count++;
417
+ console.log('[Worker NDK] Published:', dTag);
418
+ // Push blob data to Blossom if function provided
419
+ if (pushToBlossomFn) {
420
+ const hashTag = event.tags.find(t => t[0] === 'hash')?.[1];
421
+ const keyTag = event.tags.find(t => t[0] === 'key')?.[1];
422
+ if (hashTag) {
423
+ try {
424
+ const hashBytes = new Uint8Array(hashTag.match(/.{2}/g).map(b => parseInt(b, 16)));
425
+ const keyBytes = keyTag ? new Uint8Array(keyTag.match(/.{2}/g).map(b => parseInt(b, 16))) : undefined;
426
+ console.log('[Worker NDK] Pushing to Blossom:', dTag);
427
+ const result = await pushToBlossomFn(hashBytes, keyBytes, dTag);
428
+ console.log('[Worker NDK] Blossom push result:', dTag, result);
429
+ }
430
+ catch (e) {
431
+ console.warn('[Worker NDK] Failed to push to Blossom:', dTag, e);
432
+ }
433
+ }
434
+ }
435
+ }
436
+ catch (e) {
437
+ console.warn('[Worker NDK] Failed to republish:', dTag, e);
438
+ }
439
+ }
440
+ console.log('[Worker NDK] Republished', count, 'trees, skipped', skippedNoHash, 'deleted');
441
+ return count;
442
+ }
443
+ /**
444
+ * Republish a single tree's event from cache to relays
445
+ * This republishes the original event as-is (preserves signature/timestamp)
446
+ * Works for any user's tree, not just own.
447
+ */
448
+ export async function republishTree(pubkey, treeName) {
449
+ if (!ndk) {
450
+ throw new Error('NDK not initialized');
451
+ }
452
+ console.log('[Worker NDK] Republishing single tree:', pubkey, treeName);
453
+ // Fetch the specific event
454
+ const filter = {
455
+ kinds: [30078],
456
+ authors: [pubkey],
457
+ '#d': [treeName],
458
+ '#l': ['hashtree'],
459
+ };
460
+ const events = await ndk.fetchEvents(filter);
461
+ if (events.size === 0) {
462
+ console.warn('[Worker NDK] Event not found for', treeName);
463
+ return false;
464
+ }
465
+ // Get the most recent event (in case there are multiple)
466
+ let event = null;
467
+ for (const e of events) {
468
+ if (!event || (e.created_at && event.created_at && e.created_at > event.created_at)) {
469
+ event = e;
470
+ }
471
+ }
472
+ if (!event || !event.sig) {
473
+ console.warn('[Worker NDK] No signed event found for', treeName);
474
+ return false;
475
+ }
476
+ // Skip events without a hash tag (deleted trees)
477
+ const hasHash = event.tags.some(t => t[0] === 'hash' && t[1]);
478
+ if (!hasHash) {
479
+ console.warn('[Worker NDK] Event has no hash (deleted tree):', treeName);
480
+ return false;
481
+ }
482
+ const relaySet = ndk.pool?.connectedRelays();
483
+ if (!relaySet || relaySet.size === 0) {
484
+ console.warn('[Worker NDK] No connected relays');
485
+ return false;
486
+ }
487
+ // Publish to all connected relays
488
+ let success = false;
489
+ const promises = Array.from(relaySet).map(async (relay) => {
490
+ try {
491
+ await relay.publish(event);
492
+ success = true;
493
+ }
494
+ catch (e) {
495
+ console.warn('[Worker NDK] Failed to publish to relay:', relay.url, e);
496
+ }
497
+ });
498
+ await Promise.all(promises);
499
+ console.log('[Worker NDK] Republished tree:', treeName, success ? 'success' : 'failed');
500
+ return success;
501
+ }
502
+ //# sourceMappingURL=ndk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndk.js","sourceRoot":"","sources":["../../src/relay/ndk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Creates a new instance of the secp256k1 WASM and returns the Nostr wrapper
3
+ * @param z_src - a Response containing the WASM binary, a Promise that resolves to one,
4
+ * or the raw bytes to the WASM binary as a {@link BufferSource}
5
+ * @returns the wrapper API
6
+ */
7
+ declare const NostrWasm: (z_src: any) => Promise<{
8
+ generateSecretKey: () => Uint8Array<ArrayBuffer>;
9
+ getPublicKey(sk: any): any;
10
+ finalizeEvent(event: any, seckey: any, ent: any): void;
11
+ verifyEvent(event: any): void;
12
+ }>;
13
+ export { NostrWasm };
14
+ //# sourceMappingURL=nostr-wasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nostr-wasm.d.ts","sourceRoot":"","sources":["../../src/relay/nostr-wasm.ts"],"names":[],"mappings":"AAwGA;;;;;GAKG;AACH,QAAA,MAAM,SAAS,GAAU,UAAK;;;;;EAkI7B,CAAC;AAQF,OAAO,EAAE,SAAS,EAAE,CAAC"}