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